diff --git a/desktop/toolkit/qt6/component.xml b/desktop/toolkit/qt6/component.xml new file mode 100644 index 0000000000..8542b52377 --- /dev/null +++ b/desktop/toolkit/qt6/component.xml @@ -0,0 +1,3 @@ + + desktop.toolkit.qt6 + diff --git a/desktop/toolkit/qt6/qt6-3d/actions.py b/desktop/toolkit/qt6/qt6-3d/actions.py new file mode 100755 index 0000000000..b486d40837 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-3d/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-3d/files/x.patch b/desktop/toolkit/qt6/qt6-3d/files/x.patch new file mode 100644 index 0000000000..7c13e58d6a --- /dev/null +++ b/desktop/toolkit/qt6/qt6-3d/files/x.patch @@ -0,0 +1,1480 @@ +If an entity uses a QBoundingVolume and a QGeometryView, compute +the bounding volume data in the core aspect. All other cases will +still happen in the render aspect. + +Result not currently used (ie it's done again in render aspect). + +Change-Id: I4b5ed21bac42b79777c3112aa76d876ac5b6f52d +Reviewed-by: Paul Lemire +14 files changed: +src/core/aspect/qcoreaspect.cpp patch | blob | history +src/core/aspect/qcoreaspect.h patch | blob | history +src/core/aspect/qcoreaspect_p.h patch | blob | history +src/core/core.pro patch | blob | history +src/core/geometry/bufferutils_p.h [new file with mode: 0644] patch | blob +src/core/geometry/buffervisitor_p.h [new file with mode: 0644] patch | blob +src/core/geometry/geometry.pri patch | blob | history +src/core/geometry/qgeometry_p.h patch | blob | history +src/core/geometry/qgeometryview.cpp patch | blob | history +src/core/geometry/qgeometryview_p.h patch | blob | history +src/core/jobs/calcboundingvolumejob.cpp [new file with mode: 0644] patch | blob +src/core/jobs/calcboundingvolumejob_p.h [new file with mode: 0644] patch | blob +src/core/jobs/job_common_p.h [new file with mode: 0644] patch | blob +src/core/jobs/jobs.pri patch | blob | history + +diff --git a/src/core/aspect/qcoreaspect.cpp b/src/core/aspect/qcoreaspect.cpp +index 48f9aaf..dc3566e 100644 (file) +--- a/src/core/aspect/qcoreaspect.cpp ++++ b/src/core/aspect/qcoreaspect.cpp +@@ -39,12 +39,16 @@ + + #include "qcoreaspect.h" + #include "qcoreaspect_p.h" ++#include ++#include ++#include + + QT_BEGIN_NAMESPACE + + using namespace Qt3DCore; + + QCoreAspectPrivate::QCoreAspectPrivate() ++ : Qt3DCore::QAbstractAspectPrivate() + { + + } +@@ -65,7 +69,7 @@ void QCoreAspectPrivate::frameDone() + } + + QCoreAspect::QCoreAspect(QObject *parent) +- : Qt3DCore::QAbstractAspect(parent) ++ : Qt3DCore::QAbstractAspect(*new QCoreAspectPrivate, parent) + { + + } +@@ -75,10 +79,28 @@ QCoreAspect::~QCoreAspect() + + } + ++QAspectJobPtr QCoreAspect::calculateBoundingVolumeJob() const ++{ ++ Q_D(const QCoreAspect); ++ return d->m_calculateBoundingVolumeJob; ++} ++ + QVector QCoreAspect::jobsToExecute(qint64 time) + { ++ Q_D(QCoreAspect); + Q_UNUSED(time) +- return {}; ++ ++ QVector jobs; ++ ++ auto scene = d->m_aspectManager->scene(); ++ auto dirtyBits = scene->dirtyBits(); ++ ++ if (dirtyBits & QScene::GeometryDirty || ++ dirtyBits & QScene::BuffersDirty) { ++ jobs.push_back(d->m_calculateBoundingVolumeJob); ++ } ++ ++ return jobs; + } + + QVariant QCoreAspect::executeCommand(const QStringList &args) +@@ -89,12 +111,25 @@ QVariant QCoreAspect::executeCommand(const QStringList &args) + + void QCoreAspect::onRegistered() + { ++ Q_D(QCoreAspect); + ++ if (d->m_calculateBoundingVolumeJob.isNull()) ++ d->m_calculateBoundingVolumeJob = CalculateBoundingVolumeJobPtr::create(); + } + +-void QCoreAspect::onUnregistered() ++void QCoreAspect::onEngineStartup() + { ++ Q_D(QCoreAspect); + ++ Q_ASSERT(d->m_calculateBoundingVolumeJob); ++ d->m_calculateBoundingVolumeJob->setRoot(d->m_root); ++} ++ ++void QCoreAspect::frameDone() ++{ ++ Q_D(QCoreAspect); ++ auto scene = d->m_aspectManager->scene(); ++ scene->clearDirtyBits(); + } + + QT_END_NAMESPACE +diff --git a/src/core/aspect/qcoreaspect.h b/src/core/aspect/qcoreaspect.h +index 27c72f4..071b738 100644 (file) +--- a/src/core/aspect/qcoreaspect.h ++++ b/src/core/aspect/qcoreaspect.h +@@ -55,6 +55,8 @@ public: + explicit QCoreAspect(QObject *parent = nullptr); + ~QCoreAspect(); + ++ QAspectJobPtr calculateBoundingVolumeJob() const; ++ + protected: + Q_DECLARE_PRIVATE(QCoreAspect) + +@@ -62,7 +64,8 @@ private: + QVector jobsToExecute(qint64 time) override; + QVariant executeCommand(const QStringList &args) override; + void onRegistered() override; +- void onUnregistered() override; ++ void onEngineStartup() override; ++ void frameDone() override; + }; + + } +diff --git a/src/core/aspect/qcoreaspect_p.h b/src/core/aspect/qcoreaspect_p.h +index ca665fa..cda0a14 100644 (file) +--- a/src/core/aspect/qcoreaspect_p.h ++++ b/src/core/aspect/qcoreaspect_p.h +@@ -55,10 +55,15 @@ + #include + #include + ++#include ++ + QT_BEGIN_NAMESPACE + + namespace Qt3DCore { + ++class CalculateBoundingVolumeJob; ++using CalculateBoundingVolumeJobPtr = QSharedPointer; ++ + class Q_3DCORE_PRIVATE_EXPORT QCoreAspectPrivate : public Qt3DCore::QAbstractAspectPrivate + { + public: +@@ -71,6 +76,7 @@ public: + void frameDone() override; + + bool m_initialized; ++ CalculateBoundingVolumeJobPtr m_calculateBoundingVolumeJob; + }; + + } +diff --git a/src/core/core.pro b/src/core/core.pro +index b149497..846e9d8 100644 (file) +--- a/src/core/core.pro ++++ b/src/core/core.pro +@@ -1,7 +1,8 @@ +-TARGET = Qt3DCore +-MODULE = 3dcore ++TARGET = Qt3DCore ++MODULE = 3dcore + +-QT = core-private gui-private network ++QT = core-private gui-private network ++QT_FOR_PRIVATE = concurrent + + gcov { + QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage +diff --git a/src/core/geometry/bufferutils_p.h b/src/core/geometry/bufferutils_p.h +new file mode 100644 (file) +index 0000000..1b83d99 +--- /dev/null ++++ b/src/core/geometry/bufferutils_p.h +@@ -0,0 +1,113 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 Paul Lemire paul.lemire350@gmail.com ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_BUFFERUTILS_P_H ++#define QT3DCORE_BUFFERUTILS_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of other Qt classes. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++ ++namespace Qt3DCore { ++ ++class QGeometryView; ++class QBuffer; ++ ++struct BufferInfo ++{ ++ BufferInfo() ++ : type(Qt3DCore::QAttribute::VertexBaseType::Float) ++ , dataSize(0) ++ , count(0) ++ , byteStride(0) ++ , byteOffset(0) ++ , restartEnabled(false) ++ , restartIndexValue(-1) ++ {} ++ ++ QByteArray data; ++ Qt3DCore::QAttribute::VertexBaseType type; ++ uint dataSize; ++ uint count; ++ uint byteStride; ++ uint byteOffset; ++ bool restartEnabled; ++ int restartIndexValue; ++}; ++ ++ ++namespace BufferTypeInfo { ++ ++ template struct EnumToType; ++ template <> struct EnumToType { typedef const char type; }; ++ template <> struct EnumToType { typedef const uchar type; }; ++ template <> struct EnumToType { typedef const short type; }; ++ template <> struct EnumToType { typedef const ushort type; }; ++ template <> struct EnumToType { typedef const int type; }; ++ template <> struct EnumToType { typedef const uint type; }; ++ template <> struct EnumToType { typedef const float type; }; ++ template <> struct EnumToType { typedef const double type; }; ++ ++ template ++ typename EnumToType::type *castToType(const QByteArray &u, uint byteOffset) ++ { ++ return reinterpret_cast< typename EnumToType::type *>(u.constData() + byteOffset); ++ } ++ ++} // namespace BufferTypeInfo ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++ ++#endif // QT3DCORE_BUFFERUTILS_P_H +diff --git a/src/core/geometry/buffervisitor_p.h b/src/core/geometry/buffervisitor_p.h +new file mode 100644 (file) +index 0000000..69cfb9b +--- /dev/null ++++ b/src/core/geometry/buffervisitor_p.h +@@ -0,0 +1,285 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_BUFFERVISITOR_P_H ++#define QT3DCORE_BUFFERVISITOR_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of other Qt classes. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++class QEntity; ++ ++template ++class Q_AUTOTEST_EXPORT BufferVisitor ++{ ++public: ++ explicit BufferVisitor() = default; ++ virtual ~BufferVisitor() = default; ++ ++ virtual void visit(uint ndx, ValueType x) { ++ Q_UNUSED(ndx) Q_UNUSED(x) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y, ValueType z) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) Q_UNUSED(z) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y, ValueType z, ValueType w) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) Q_UNUSED(z) Q_UNUSED(w) ++ } ++ ++ bool apply(QAttribute *attribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ if (attribute->vertexBaseType() != VertexBaseType) ++ return false; ++ if (attribute->vertexSize() < dataSize) ++ return false; ++ ++ auto data = attribute->buffer()->data(); ++ auto vertexBuffer = BufferTypeInfo::castToType(data, attribute->byteOffset()); ++ ++ if (indexAttribute) { ++ auto indexData = indexAttribute->buffer()->data(); ++ switch (indexAttribute->vertexBaseType()) { ++ case Qt3DCore::QAttribute::UnsignedShort: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ case Qt3DCore::QAttribute::UnsignedInt: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ case Qt3DCore::QAttribute::UnsignedByte: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ default: Q_UNREACHABLE(); ++ } ++ } else { ++ switch (dataSize) { ++ case 1: traverseCoordinates1(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 2: traverseCoordinates2(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 3: traverseCoordinates3(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 4: traverseCoordinates4(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ default: Q_UNREACHABLE(); ++ } ++ } ++ ++ return true; ++ } ++ ++protected: ++ template ++ void traverseCoordinateIndexed(VertexBufferType *vertexBuffer, ++ IndexBufferType *indexBuffer, ++ int vertexByteStride, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ switch (dataSize) { ++ case 1: traverseCoordinates1Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 2: traverseCoordinates2Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 3: traverseCoordinates3Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 4: traverseCoordinates4Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ default: Q_UNREACHABLE(); ++ } ++ } ++ ++ template ++ void traverseCoordinates1(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride / sizeof(Coordinate); ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates1Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride / sizeof(Coordinate); ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates2(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 2; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1]); ++ coordinates += stride; ++ } ++ } ++ ++ ++ template ++ void traverseCoordinates2Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 2; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates3(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 3; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1], coordinates[2]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates3Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 3; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1], coordinates[n + 2]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates4(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 4; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1], coordinates[2], coordinates[3]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates4Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 4; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1], coordinates[n + 2], coordinates[n + 3]); ++ } ++ } ++ } ++}; ++ ++typedef BufferVisitor Buffer3fVisitor; ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++ ++#endif // QT3DCORE_BUFFERVISITOR_P_H +diff --git a/src/core/geometry/geometry.pri b/src/core/geometry/geometry.pri +index eadf7ca..70bda07 100644 (file) +--- a/src/core/geometry/geometry.pri ++++ b/src/core/geometry/geometry.pri +@@ -12,7 +12,9 @@ HEADERS += \ + $$PWD/qgeometry.h \ + $$PWD/qgeometryfactory_p.h \ + $$PWD/qgeometryview_p.h \ +- $$PWD/qgeometryview.h ++ $$PWD/qgeometryview.h \ ++ $$PWD/bufferutils_p.h \ ++ $$PWD/buffervisitor_p.h + + SOURCES += \ + $$PWD/qabstractfunctor.cpp \ +diff --git a/src/core/geometry/qgeometry_p.h b/src/core/geometry/qgeometry_p.h +index 2a05b5b..ed13b3f 100644 (file) +--- a/src/core/geometry/qgeometry_p.h ++++ b/src/core/geometry/qgeometry_p.h +@@ -72,7 +72,6 @@ public: + void setScene(QScene *scene) override; + void update() override; + void setExtent(const QVector3D &minExtent, const QVector3D &maxExtent); +- + static QGeometryPrivate *get(QGeometry *q); + + QVector m_attributes; +diff --git a/src/core/geometry/qgeometryview.cpp b/src/core/geometry/qgeometryview.cpp +index 65e30d9..258448b 100644 (file) +--- a/src/core/geometry/qgeometryview.cpp ++++ b/src/core/geometry/qgeometryview.cpp +@@ -39,11 +39,250 @@ + + #include "qgeometryview.h" + #include "qgeometryview_p.h" ++#include "qgeometry_p.h" ++#include "buffervisitor_p.h" ++ ++#include ++#include ++#include + + QT_BEGIN_NAMESPACE + + using namespace Qt3DCore; + ++namespace { ++ ++class FindExtremePoints : public Buffer3fVisitor ++{ ++public: ++ FindExtremePoints() ++ : Buffer3fVisitor() ++ , xMin(0.0f), xMax(0.0f), yMin(0.0f), yMax(0.0f), zMin(0.0f), zMax(0.0f) ++ { } ++ ++ float xMin, xMax, yMin, yMax, zMin, zMax; ++ Vector3D xMinPt, xMaxPt, yMinPt, yMaxPt, zMinPt, zMaxPt; ++ ++ void visit(uint ndx, float x, float y, float z) override ++ { ++ if (ndx) { ++ if (x < xMin) { ++ xMin = x; ++ xMinPt = Vector3D(x, y, z); ++ } ++ if (x > xMax) { ++ xMax = x; ++ xMaxPt = Vector3D(x, y, z); ++ } ++ if (y < yMin) { ++ yMin = y; ++ yMinPt = Vector3D(x, y, z); ++ } ++ if (y > yMax) { ++ yMax = y; ++ yMaxPt = Vector3D(x, y, z); ++ } ++ if (z < zMin) { ++ zMin = z; ++ zMinPt = Vector3D(x, y, z); ++ } ++ if (z > zMax) { ++ zMax = z; ++ zMaxPt = Vector3D(x, y, z); ++ } ++ } else { ++ xMin = xMax = x; ++ yMin = yMax = y; ++ zMin = zMax = z; ++ xMinPt = xMaxPt = yMinPt = yMaxPt = zMinPt = zMaxPt = Vector3D(x, y, z); ++ } ++ } ++}; ++ ++class FindMaxDistantPoint : public Buffer3fVisitor ++{ ++public: ++ FindMaxDistantPoint() ++ : Buffer3fVisitor() ++ { } ++ ++ float maxLengthSquared = 0.0f; ++ bool setReferencePoint = false; ++ bool hasNoPoints = true; ++ Vector3D maxDistPt; ++ Vector3D referencePt; ++ ++ void visit(uint ndx, float x, float y, float z) override ++ { ++ Q_UNUSED(ndx) ++ const Vector3D p = Vector3D(x, y, z); ++ ++ if (hasNoPoints && setReferencePoint) { ++ maxLengthSquared = 0.0f; ++ referencePt = p; ++ } ++ const float lengthSquared = (p - referencePt).lengthSquared(); ++ if ( lengthSquared >= maxLengthSquared ) { ++ maxDistPt = p; ++ maxLengthSquared = lengthSquared; ++ } ++ hasNoPoints = false; ++ } ++}; ++ ++std::pair calculateLocalBoundingVolume(QGeometryView *node) ++{ ++ // The Bounding volume will only be computed if the position Buffer ++ // isDirty ++ ++ if (!node->isEnabled()) ++ return {}; ++ ++ if (node->primitiveType() == QGeometryView::Patches) ++ return {}; ++ ++ QGeometry *geom = node->geometry(); ++ QGeometryPrivate *dgeom = QGeometryPrivate::get(geom); ++ ++ if (!geom) ++ return {}; ++ ++ int drawVertexCount = node->vertexCount(); // may be 0, gets changed below if so ++ ++ QAttribute *positionAttribute = dgeom->m_boundingVolumePositionAttribute; ++ const QVector attributes = geom->attributes(); ++ ++ // Use the default position attribute if attribute is null ++ if (!positionAttribute) { ++ for (QAttribute *attr : attributes) { ++ if (attr->name() == QAttribute::defaultPositionAttributeName()) { ++ positionAttribute = attr; ++ break; ++ } ++ } ++ } ++ ++ if (!positionAttribute ++ || positionAttribute->attributeType() != QAttribute::VertexAttribute ++ || positionAttribute->vertexBaseType() != QAttribute::Float ++ || positionAttribute->vertexSize() < 3) { ++ qWarning("calculateLocalBoundingVolume: Position attribute not suited for bounding volume computation"); ++ return {}; ++ } ++ ++ Qt3DCore::QBuffer *buf = positionAttribute->buffer(); ++ // No point in continuing if the positionAttribute doesn't have a suitable buffer ++ if (!buf) { ++ qWarning("calculateLocalBoundingVolume: Position attribute not referencing a valid buffer"); ++ return {}; ++ } ++ ++ // Check if there is an index attribute. ++ QAttribute *indexAttribute = nullptr; ++ Qt3DCore::QBuffer *indexBuf = nullptr; ++ ++ for (const auto attr : attributes) { ++ if (attr->attributeType() == QAttribute::IndexAttribute) { ++ indexBuf = attr->buffer(); ++ if (indexBuf) { ++ indexAttribute = attr; ++ ++ if (!drawVertexCount) ++ drawVertexCount = static_cast(indexAttribute->count()); ++ ++ static const QAttribute::VertexBaseType validIndexTypes[] = { ++ QAttribute::UnsignedShort, ++ QAttribute::UnsignedInt, ++ QAttribute::UnsignedByte ++ }; ++ ++ if (std::find(std::begin(validIndexTypes), ++ std::end(validIndexTypes), ++ indexAttribute->vertexBaseType()) == std::end(validIndexTypes)) { ++ qWarning() << "calculateLocalBoundingVolume: Unsupported index attribute type" << indexAttribute->name() << indexAttribute->vertexBaseType(); ++ return {}; ++ } ++ ++ break; ++ } ++ } ++ } ++ ++ if (!indexAttribute && !drawVertexCount) ++ drawVertexCount = static_cast(positionAttribute->count()); ++ ++ // Buf will be set to not dirty once it's loaded ++ // in a job executed after this one ++ // We need to recompute the bounding volume ++ // If anything in the GeometryRenderer has changed ++ BoundingVolumeCalculator reader; ++ if (reader.apply(positionAttribute, indexAttribute, drawVertexCount, ++ node->primitiveRestartEnabled(), node->restartIndexValue())) ++ return {reader.min(), reader.max()}; ++ ++ return {}; ++} ++ ++} ++ ++ ++bool BoundingVolumeCalculator::apply(QAttribute *positionAttribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++{ ++ m_radius = -1.f; ++ ++ FindExtremePoints findExtremePoints; ++ if (!findExtremePoints.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) { ++ return false; ++ } ++ ++ m_min = QVector3D(findExtremePoints.xMin, findExtremePoints.yMin, findExtremePoints.zMin); ++ m_max = QVector3D(findExtremePoints.xMax, findExtremePoints.yMax, findExtremePoints.zMax); ++ ++ FindMaxDistantPoint maxDistantPointY; ++ maxDistantPointY.setReferencePoint = true; ++ if (!maxDistantPointY.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) { ++ return false; ++ } ++ if (maxDistantPointY.hasNoPoints) ++ return false; ++ ++ //const Vector3D x = maxDistantPointY.referencePt; ++ const Vector3D y = maxDistantPointY.maxDistPt; ++ ++ FindMaxDistantPoint maxDistantPointZ; ++ maxDistantPointZ.setReferencePoint = false; ++ maxDistantPointZ.referencePt = y; ++ if (!maxDistantPointZ.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) ++ return false; ++ const Vector3D z = maxDistantPointZ.maxDistPt; ++ const Vector3D center = (y + z) * .5f; ++ ++ FindMaxDistantPoint maxDistantPointCenter; ++ maxDistantPointCenter.setReferencePoint = false; ++ maxDistantPointCenter.referencePt = center; ++ if (!maxDistantPointCenter.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) ++ return false; ++ ++ const float radius = (center - maxDistantPointCenter.maxDistPt).length(); ++ ++ if (center == Vector3D{} || radius < 0.f) ++ return false; ++ ++ m_radius = radius; ++ m_center = QVector3D{ center.x(), center.y(), center.z() }; ++ ++ return true; ++} ++ ++ + QGeometryViewPrivate::QGeometryViewPrivate() + : QNodePrivate() + , m_instanceCount(1) +@@ -65,6 +304,11 @@ QGeometryViewPrivate::~QGeometryViewPrivate() + { + } + ++QGeometryViewPrivate *QGeometryViewPrivate::get(QGeometryView *q) ++{ ++ return q->d_func(); ++} ++ + void QGeometryViewPrivate::update() + { + if (!m_blockNotifications) +diff --git a/src/core/geometry/qgeometryview_p.h b/src/core/geometry/qgeometryview_p.h +index f806c4d..05dea1d 100644 (file) +--- a/src/core/geometry/qgeometryview_p.h ++++ b/src/core/geometry/qgeometryview_p.h +@@ -55,6 +55,8 @@ + #include + #include + #include ++ ++#include + #include + + QT_BEGIN_NAMESPACE +@@ -67,6 +69,8 @@ public: + QGeometryViewPrivate(); + ~QGeometryViewPrivate(); + ++ static QGeometryViewPrivate *get(QGeometryView *q); ++ + void update() override; + + Q_DECLARE_PUBLIC(QGeometryView) +@@ -85,6 +89,30 @@ public: + bool m_dirty; + }; + ++class BoundingVolumeCalculator ++{ ++public: ++ BoundingVolumeCalculator() = default; ++ ++ const QVector3D min() const { return m_min; } ++ const QVector3D max() const { return m_max; } ++ const QVector3D center() const { return m_center; } ++ float radius() const { return m_radius; } ++ bool isValid() const { return m_radius >= 0.f; } ++ ++ bool apply(QAttribute *positionAttribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex); ++ ++private: ++ QVector3D m_min; ++ QVector3D m_max; ++ QVector3D m_center; ++ float m_radius = -1.f; ++}; ++ + } // namespace Qt3DCore + + QT_END_NAMESPACE +diff --git a/src/core/jobs/calcboundingvolumejob.cpp b/src/core/jobs/calcboundingvolumejob.cpp +new file mode 100644 (file) +index 0000000..37ee92e +--- /dev/null ++++ b/src/core/jobs/calcboundingvolumejob.cpp +@@ -0,0 +1,317 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "calcboundingvolumejob_p.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#if QT_CONFIG(concurrent) ++#include ++#endif ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++namespace { ++ ++BoundingVolumeComputeData findBoundingVolumeComputeData(QGeometryView *node) ++{ ++ if (!node->isEnabled()) ++ return {}; ++ ++ if (node->primitiveType() == QGeometryView::Patches) ++ return {}; ++ ++ QGeometry *geom = node->geometry(); ++ QGeometryPrivate *dgeom = QGeometryPrivate::get(geom); ++ if (!geom) ++ return {}; ++ ++ int drawVertexCount = node->vertexCount(); // may be 0, gets changed below if so ++ ++ QAttribute *positionAttribute = dgeom->m_boundingVolumePositionAttribute; ++ const QVector attributes = geom->attributes(); ++ ++ // Use the default position attribute if attribute is null ++ if (!positionAttribute) { ++ for (QAttribute *attr : attributes) { ++ if (attr->name() == QAttribute::defaultPositionAttributeName()) { ++ positionAttribute = attr; ++ break; ++ } ++ } ++ } ++ ++ if (!positionAttribute ++ || positionAttribute->attributeType() != QAttribute::VertexAttribute ++ || positionAttribute->vertexBaseType() != QAttribute::Float ++ || positionAttribute->vertexSize() < 3) { ++ qWarning("findBoundingVolumeComputeData: Position attribute not suited for bounding volume computation"); ++ return {}; ++ } ++ ++ Qt3DCore::QBuffer *positionBuffer = positionAttribute->buffer(); ++ // No point in continuing if the positionAttribute doesn't have a suitable buffer ++ if (!positionBuffer) { ++ qWarning("findBoundingVolumeComputeData: Position attribute not referencing a valid buffer"); ++ return {}; ++ } ++ ++ // Check if there is an index attribute. ++ QAttribute *indexAttribute = nullptr; ++ Qt3DCore::QBuffer *indexBuffer = nullptr; ++ ++ for (const auto attr : attributes) { ++ if (attr->attributeType() == QAttribute::IndexAttribute) { ++ indexBuffer = attr->buffer(); ++ if (indexBuffer) { ++ indexAttribute = attr; ++ ++ if (!drawVertexCount) ++ drawVertexCount = static_cast(indexAttribute->count()); ++ ++ static const QAttribute::VertexBaseType validIndexTypes[] = { ++ QAttribute::UnsignedShort, ++ QAttribute::UnsignedInt, ++ QAttribute::UnsignedByte ++ }; ++ ++ if (std::find(std::begin(validIndexTypes), ++ std::end(validIndexTypes), ++ indexAttribute->vertexBaseType()) == std::end(validIndexTypes)) { ++ qWarning() << "findBoundingVolumeComputeData: Unsupported index attribute type" << indexAttribute->name() << indexAttribute->vertexBaseType(); ++ return {}; ++ } ++ ++ break; ++ } ++ } ++ } ++ ++ if (!indexAttribute && !drawVertexCount) ++ drawVertexCount = static_cast(positionAttribute->count()); ++ ++ return { nullptr, nullptr, positionAttribute, indexAttribute, drawVertexCount }; ++} ++ ++BoundingVolumeComputeResult calculateLocalBoundingVolume(const BoundingVolumeComputeData &data) { ++ BoundingVolumeCalculator calculator; ++ if (calculator.apply(data.positionAttribute, data.indexAttribute, data.vertexCount, ++ data.provider->view()->primitiveRestartEnabled(), ++ data.provider->view()->restartIndexValue())) ++ return { ++ data.entity, data.provider, data.positionAttribute, data.indexAttribute, ++ calculator.min(), calculator.max(), ++ calculator.center(), calculator.radius() ++ }; ++ return {}; ++} ++ ++bool isTreeEnabled(QEntity *entity) { ++ if (!entity->isEnabled()) ++ return false; ++ ++ QEntity *parent = entity->parentEntity(); ++ while (parent) { ++ if (!parent->isEnabled()) ++ return false; ++ parent = parent->parentEntity(); ++ } ++ ++ return true; ++} ++ ++struct UpdateBoundFunctor ++{ ++ // This define is required to work with QtConcurrent ++ typedef QVector result_type; ++ result_type operator ()(const BoundingVolumeComputeData &data) ++ { ++ return { calculateLocalBoundingVolume(data) }; ++ } ++}; ++ ++struct ReduceUpdateBoundFunctor ++{ ++ void operator ()(QVector &result, const QVector &values) ++ { ++ result += values; ++ } ++}; ++ ++} // anonymous ++ ++//class CalculateBoundingVolumeJobPrivate : public Qt3DCore::QAspectJobPrivate ++//{ ++//public: ++// CalculateBoundingVolumeJobPrivate() { } ++// ~CalculateBoundingVolumeJobPrivate() override { } ++ ++// void postFrame(Qt3DCore::QAspectManager *manager) override ++// { ++// Q_UNUSED(manager) ++//// for (Geometry *backend : qAsConst(m_updatedGeometries)) { ++//// Qt3DCore::QGeometry *node = qobject_cast(manager->lookupNode(backend->peerId())); ++//// if (!node) ++//// continue; ++//// Qt3DCore::QGeometryPrivate *dNode = static_cast(Qt3DCore::QNodePrivate::get(node)); ++//// dNode->setExtent(backend->min(), backend->max()); ++//// } ++// } ++ ++//}; ++ ++CalculateBoundingVolumeJob::CalculateBoundingVolumeJob() ++ : Qt3DCore::QAspectJob() ++ , m_root(nullptr) ++{ ++ SET_JOB_RUN_STAT_TYPE(this, JobTypes::CalcBoundingVolume, 0) ++} ++ ++void CalculateBoundingVolumeJob::run() ++{ ++ m_results.clear(); ++ ++ QHash dirtyEntities; ++ QNodeVisitor visitor; ++ visitor.traverse(m_root, [](QNode *) {}, [&dirtyEntities](QEntity *entity) { ++ if (!isTreeEnabled(entity)) ++ return; ++ ++ const auto bvProviders = entity->componentsOfType(); ++ if (bvProviders.isEmpty()) ++ return; ++ ++ // we go through the list until be find a dirty provider, ++ // or THE primary provider ++ bool foundBV = false; ++ for (auto bv: bvProviders) { ++ if (!bv->view()) ++ continue; ++ auto dbv = QBoundingVolumePrivate::get(bv); ++ if (foundBV && !dbv->m_primaryProvider) ++ continue; ++ ++ auto bvdata = findBoundingVolumeComputeData(bv->view()); ++ if (!bvdata.valid()) ++ continue; ++ bvdata.entity = entity; ++ bvdata.provider = bv; ++ ++ bool dirty = QEntityPrivate::get(entity)->m_dirty; ++ dirty |= QGeometryViewPrivate::get(bv->view())->m_dirty; ++ dirty |= QGeometryPrivate::get(bv->view()->geometry())->m_dirty; ++ dirty |= QAttributePrivate::get(bvdata.positionAttribute)->m_dirty; ++ dirty |= QBufferPrivate::get(bvdata.positionAttribute->buffer())->m_dirty; ++ if (bvdata.indexAttribute) { ++ dirty |= QAttributePrivate::get(bvdata.indexAttribute)->m_dirty; ++ dirty |= QBufferPrivate::get(bvdata.indexAttribute->buffer())->m_dirty; ++ } ++ ++ if (dbv->m_primaryProvider) { ++ if (dirty) ++ dirtyEntities[entity] = bvdata; ++ break; ++ } else if (dirty) { ++ dirtyEntities[entity] = bvdata; ++ foundBV = true; ++ } ++ } ++ }); ++ ++#if QT_CONFIG(concurrent) ++ if (dirtyEntities.size() > 1) { ++ UpdateBoundFunctor functor; ++ ReduceUpdateBoundFunctor reduceFunctor; ++ m_results = QtConcurrent::blockingMappedReduced(dirtyEntities, functor, reduceFunctor); ++ } else ++#endif ++ { ++ for (auto it = dirtyEntities.begin(); it != dirtyEntities.end(); ++it) { ++ auto res = calculateLocalBoundingVolume(it.value()); ++ if (res.valid()) ++ m_results.push_back(res); // How do we push it to the backends???? ++ } ++ } ++ ++ for (auto result: qAsConst(m_results)) { ++ // set the results ++ QBoundingVolumePrivate::get(result.provider)->setImplicitBounds(result.m_min, result.m_max, result.m_center, result.m_radius); ++ } ++} ++ ++void CalculateBoundingVolumeJob::postFrame(QAspectEngine *aspectEngine) ++{ ++ Q_UNUSED(aspectEngine) ++ ++ for (auto result: qAsConst(m_results)) { ++ // reset dirty flags ++ QEntityPrivate::get(result.entity)->m_dirty = false; ++ QGeometryViewPrivate::get(result.provider->view())->m_dirty = false; ++ QGeometryPrivate::get(result.provider->view()->geometry())->m_dirty = false; ++ QAttributePrivate::get(result.positionAttribute)->m_dirty = false; ++ QBufferPrivate::get(result.positionAttribute->buffer())->m_dirty = false; ++ if (result.indexAttribute) { ++ QAttributePrivate::get(result.indexAttribute)->m_dirty = false; ++ QBufferPrivate::get(result.indexAttribute->buffer())->m_dirty = false; ++ } ++ } ++ ++ m_results.clear(); ++} ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ +diff --git a/src/core/jobs/calcboundingvolumejob_p.h b/src/core/jobs/calcboundingvolumejob_p.h +new file mode 100644 (file) +index 0000000..498fe76 +--- /dev/null ++++ b/src/core/jobs/calcboundingvolumejob_p.h +@@ -0,0 +1,113 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_CALCBOUNDINGVOLUMEJOB_H ++#define QT3DCORE_CALCBOUNDINGVOLUMEJOB_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++ ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++class CalculateBoundingVolumeJobPrivate; ++class QEntity; ++class QAttribute; ++class QBoundingVolume; ++ ++struct BoundingVolumeComputeData { ++ QEntity *entity = nullptr; ++ QBoundingVolume *provider = nullptr; ++ QAttribute *positionAttribute = nullptr; ++ QAttribute *indexAttribute = nullptr; ++ int vertexCount = 0; ++ ++ bool valid() const { return positionAttribute != nullptr; } ++}; ++ ++struct BoundingVolumeComputeResult { ++ QEntity *entity = nullptr; ++ QBoundingVolume *provider = nullptr; ++ QAttribute *positionAttribute = nullptr; ++ QAttribute *indexAttribute = nullptr; ++ QVector3D m_min; ++ QVector3D m_max; ++ QVector3D m_center; ++ float m_radius = -1.f; ++ ++ bool valid() const { return m_radius >= 0.f; } ++}; ++ ++class Q_3DCORE_PRIVATE_EXPORT CalculateBoundingVolumeJob : public Qt3DCore::QAspectJob ++{ ++public: ++ explicit CalculateBoundingVolumeJob(); ++ ++ void setRoot(QEntity *root) { m_root = root; } ++ void run() override; ++ void postFrame(QAspectEngine *aspectEngine) override; ++ ++private: ++ Q_DECLARE_PRIVATE(CalculateBoundingVolumeJob) ++ QEntity *m_root; ++ QVector m_results; ++}; ++ ++typedef QSharedPointer CalculateBoundingVolumeJobPtr; ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++#endif // QT3DCORE_CALCBOUNDINGVOLUMEJOB_H +diff --git a/src/core/jobs/job_common_p.h b/src/core/jobs/job_common_p.h +new file mode 100644 (file) +index 0000000..6cbf178 +--- /dev/null ++++ b/src/core/jobs/job_common_p.h +@@ -0,0 +1,73 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_JOB_COMMON_P_H ++#define QT3DCORE_JOB_COMMON_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++namespace JobTypes { ++ ++ enum JobType { ++ LoadBuffer = 4096, ++ CalcBoundingVolume, ++ }; ++ ++} // JobTypes ++ ++} // Qt3DCore ++ ++QT_END_NAMESPACE ++ ++#endif // QT3DCORE_JOB_COMMON_P_H +diff --git a/src/core/jobs/jobs.pri b/src/core/jobs/jobs.pri +index 5d262f5..a045339 100644 (file) +--- a/src/core/jobs/jobs.pri ++++ b/src/core/jobs/jobs.pri +@@ -4,7 +4,8 @@ SOURCES += \ + $$PWD/qaspectjobmanager.cpp \ + $$PWD/qabstractaspectjobmanager.cpp \ + $$PWD/qthreadpooler.cpp \ +- $$PWD/task.cpp ++ $$PWD/task.cpp \ ++ $$PWD/calcboundingvolumejob.cpp + + HEADERS += \ + $$PWD/qaspectjob.h \ +@@ -13,7 +14,9 @@ HEADERS += \ + $$PWD/qaspectjobmanager_p.h \ + $$PWD/qabstractaspectjobmanager_p.h \ + $$PWD/task_p.h \ +- $$PWD/qthreadpooler_p.h ++ $$PWD/qthreadpooler_p.h \ ++ $$PWD/calcboundingvolumejob_p.h \ ++ $$PWD/job_common_p.h + + INCLUDEPATH += $$PWD diff --git a/desktop/toolkit/qt6/qt6-3d/pspec.xml b/desktop/toolkit/qt6/qt6-3d/pspec.xml new file mode 100755 index 0000000000..1f670258e9 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-3d/pspec.xml @@ -0,0 +1,71 @@ + + + + + qt6-3d + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop + C++ and QML APIs for easy inclusion of 3D graphics + C++ and QML APIs for easy inclusion of 3D graphics + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qt3d-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + qt6-declarative-devel + qt6-shadertools-devel + + + + qt6-3d + C++ and QML APIs for easy inclusion of 3D graphics + + qt6-base + qt6-declarative + qt6-shadertools + libgcc + assimp + + + /usr/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules/* + + + + + qt6-3d-devel + Development files for qt6-3d + + qt6-base-devel + qt6-declarative-devel + qt6-3d + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-5compat/actions.py b/desktop/toolkit/qt6/qt6-5compat/actions.py new file mode 100755 index 0000000000..fc281f18c6 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-5compat/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + # for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + # pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-5compat/pspec.xml b/desktop/toolkit/qt6/qt6-5compat/pspec.xml new file mode 100755 index 0000000000..a984db726c --- /dev/null +++ b/desktop/toolkit/qt6/qt6-5compat/pspec.xml @@ -0,0 +1,68 @@ + + + + + qt6-5compat + http://qt.digia.com/ + + Pisi Linux Admins + admin@pisilinux.org + + Module that contains unsupported Qt 5 APIs + Module that contains unsupported Qt 5 APIs + custom + FDL + GPL3 + LGPL3 + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qt5compat-everywhere-src-6.4.0.tar.xz + + ninja + cmake + icu4c-devel + qt6-base-devel + qt6-declarative-devel + qt6-shadertools-devel + + + + + qt6-5compat + + icu4c + libgcc + qt6-base + qt6-declarative + qt6-shadertools + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/licenses + /usr/share/qt6/modules/Core5Compat.json + + + + + qt6-5compat-devel + + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/include/qt6 + + + qt6-5compat + qt6-base-devel + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-5compat/translations.xml b/desktop/toolkit/qt6/qt6-5compat/translations.xml new file mode 100755 index 0000000000..ee4979c5e0 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-5compat/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-location + Konum, uydu ve alan izleme sınıflarına erişim sağlar + Konum, uydu ve alan izleme sınıflarına erişim sağlar + + + + qt5-location-devel + qt5-location için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-base/actions.py b/desktop/toolkit/qt6/qt6-base/actions.py new file mode 100755 index 0000000000..2cb4d805cc --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/actions.py @@ -0,0 +1,120 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +import os + +WorkDir = "qtbase-everywhere-src-%s" % get.srcVERSION().replace('_','-').replace('pre1', 'tp') + +qtbase = qt6.prefix +absoluteWorkDir = "%s/%s" % (get.workDIR(), WorkDir) + +#Temporary bindir to avoid qt5 conflicts +bindirQt6="/usr/lib/qt6/bin" + +def setup(): + #shelltools.system("patch -Rp1 < qt6-base-nouveau-freeze.patch") + + checkdeletepath="%s/qtbase/src/3rdparty" % absoluteWorkDir + for dir in ('libjpeg', 'freetype', 'libpng', 'zlib', "xcb", "sqlite"): + if os.path.exists(checkdeletepath+dir): + shelltools.unlinkDir(checkdeletepath+dir) + + filteredCFLAGS = get.CFLAGS().replace("-g3", "-g") + filteredCXXFLAGS = get.CXXFLAGS().replace("-g3", "-g") + + vars = {"PISILINUX_CC" : get.CC() + (" -m32" if get.buildTYPE() == "emul32" else ""), + "PISILINUX_CXX": get.CXX() + (" -m32" if get.buildTYPE() == "emul32" else ""), + "PISILINUX_CFLAGS": filteredCFLAGS + (" -m32" if get.buildTYPE() == "emul32" else ""), + "PISILINUX_LDFLAGS": get.LDFLAGS() + (" -m32" if get.buildTYPE() == "emul32" else "")} + + for k, v in vars.items(): + pisitools.dosed("mkspecs/common/g++-base.conf", k, v) + pisitools.dosed("mkspecs/common/g++-unix.conf", k, v) + + shelltools.export("CFLAGS", filteredCFLAGS) + shelltools.export("CXXFLAGS", filteredCXXFLAGS) + #check that dosed commands without releated patches + pisitools.dosed("mkspecs/common/gcc-base-unix.conf", "\-Wl,\-rpath,") + pisitools.dosed("mkspecs/common/gcc-base.conf", "\-O2", filteredCFLAGS) + pisitools.dosed("mkspecs/common/gcc-base.conf", "^(QMAKE_LFLAGS\s+\+=)", r"\1 %s" % get.LDFLAGS()) + + if not get.buildTYPE() == "emul32": + #-no-pch makes build ccache-friendly + options = " -DCMAKE_INSTALL_PREFIX=%s \ + -DCMAKE_BUILD_TYPE=Release \ + -DINSTALL_BINDIR=%s \ + -DINSTALL_INCLUDEDIR=%s \ + -DINSTALL_ARCHDATADIR=%s \ + -DINSTALL_DOCDIR=%s \ + -DINSTALL_DATADIR=%s \ + -DINSTALL_MKSPECSDIR=%s \ + -DINSTALL_EXAMPLESDIR=%s \ + -DQT_FEATURE_libproxy=ON \ + -DQT_FEATURE_vulkan=ON \ + -DQT_FEATURE_system_freetype=ON \ + -DQT_FEATURE_system_harfbuzz=ON \ + -DQT_FEATURE_system_sqlite=ON \ + -DQT_FEATURE_dbus_linked=ON \ + -DQT_FEATURE_journald=ON \ + -DQT_FEATURE_system_zlib=ON \ + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ + -DCMAKE_MESSAGE_LOG_LEVEL=STATUS \ + -DQT_FEATURE_openssl_linked=ON" % (qt6.prefix, bindirQt6, qt6.headerdir, qt6.archdatadir, qt6.docdir, qt6.datadir, qt6.mkspecsdir, qt6.examplesdir) + #-G Ninja \ + #-DQT_FEATURE_directfb=ON \ + else: + pisitools.dosed("mkspecs/linux-g++-64/qmake.conf", "-m64", "-m32") + shelltools.export("LDFLAGS", "-m32 %s" % get.LDFLAGS()) + options = "-no-pch -v -confirm-license -opensource -no-use-gold-linker\ + -platform linux-g++-32 \ + -xplatform linux-g++-32 \ + -prefix /usr/lib32 \ + -bindir /usr/lib32/qt6/bin \ + -docdir /usr/share/doc/qt \ + -headerdir /usr/lib32/qt6/include/qt6 \ + -datadir /usr/share/qt6 \ + -sysconfdir /etc/xdg \ + -examplesdir /usr/share/doc/qt/examples \ + -system-sqlite \ + -openssl-linked \ + -nomake examples \ + -no-xcb \ + -no-rpath \ + -optimized-qmake \ + -dbus-linked \ + -system-harfbuzz \ + -libdir /usr/lib32/ \ + -archdatadir /usr/lib32/qt6/" + + qt6.configure(options) + +def build(): + shelltools.export("LD_LIBRARY_PATH", "%s/lib:%s" % (get.curDIR(), get.ENV("LD_LIBRARY_PATH"))) + qt6.make() + +def install(): + if get.buildTYPE() == "emul32": + qt6.install("INSTALL_ROOT=%s32" % get.installDIR()) + shelltools.move("%s32/usr/lib32" % get.installDIR(), "%s/usr" % get.installDIR()) + return + + pisitools.dodir(qt6.libdir) + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + mkspecPath = "%s/mkspecs" % qt6.archdatadir + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-firebird.patch b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-firebird.patch new file mode 100644 index 0000000000..c794304440 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-firebird.patch @@ -0,0 +1,32 @@ +diff --git a/cmake/FindInterbase.cmake b/cmake/FindInterbase.cmake +index 22f866d8..4ef16e75 100644 +--- a/cmake/FindInterbase.cmake ++++ b/cmake/FindInterbase.cmake +@@ -19,12 +19,12 @@ + # The Interbase client library + + find_path(Interbase_INCLUDE_DIR +- NAMES ibase.h ++ NAMES firebird/ibase.h + HINTS ${Interbase_INCLUDEDIR} + ) + + find_library(Interbase_LIBRARY +- NAMES firebase_ms fbclient gds ++ NAMES firebase_ms fbclient gds fbclient + HINTS ${Interbase_LIBDIR} + ) + +diff --git a/src/plugins/sqldrivers/ibase/qsql_ibase_p.h b/src/plugins/sqldrivers/ibase/qsql_ibase_p.h +index 9109c2b4..7477d5ee 100644 +--- a/src/plugins/sqldrivers/ibase/qsql_ibase_p.h ++++ b/src/plugins/sqldrivers/ibase/qsql_ibase_p.h +@@ -52,7 +52,7 @@ + // + + #include +-#include ++#include + + #ifdef QT_PLUGIN + #define Q_EXPORT_SQLDRIVER_IBASE diff --git a/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-gcc11.patch b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-gcc11.patch new file mode 100644 index 0000000000..dfbd08ff72 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-gcc11.patch @@ -0,0 +1,36 @@ +diff --git a/examples/corelib/tools/contiguouscache/randomlistmodel.h b/examples/corelib/tools/contiguouscache/randomlistmodel.h +index 1fabb0d9..393ebaa3 100644 +--- a/examples/corelib/tools/contiguouscache/randomlistmodel.h ++++ b/examples/corelib/tools/contiguouscache/randomlistmodel.h +@@ -50,6 +50,7 @@ + #ifndef RANDOMLISTMODEL_H + #define RANDOMLISTMODEL_H + ++#include + #include + #include + +diff --git a/src/corelib/text/qanystringview.h b/src/corelib/text/qanystringview.h +index a7606253..60747cf0 100644 +--- a/src/corelib/text/qanystringview.h ++++ b/src/corelib/text/qanystringview.h +@@ -39,6 +39,7 @@ + #ifndef QANYSTRINGVIEW_H + #define QANYSTRINGVIEW_H + ++#include + #include + #include + +diff --git a/src/corelib/text/qbytearray.h b/src/corelib/text/qbytearray.h +index 9f646aaa..a5af793c 100644 +--- a/src/corelib/text/qbytearray.h ++++ b/src/corelib/text/qbytearray.h +@@ -41,6 +41,7 @@ + #ifndef QBYTEARRAY_H + #define QBYTEARRAY_H + ++#include + #include + #include + #include diff --git a/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-libglvnd.patch b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-libglvnd.patch new file mode 100644 index 0000000000..c5aa7e5ddf --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-libglvnd.patch @@ -0,0 +1,16 @@ +diff --git a/src/gui/configure.cmake b/src/gui/configure.cmake +index 0bf250ea..2d1bb645 100644 +--- a/src/gui/configure.cmake ++++ b/src/gui/configure.cmake +@@ -174,9 +174,9 @@ qt_config_compile_test(egl_x11 + int main(void) + { + /* BEGIN TEST: */ +-Display *dpy = EGL_DEFAULT_DISPLAY; ++Display *dpy = reinterpret_cast(EGL_DEFAULT_DISPLAY); + EGLNativeDisplayType egldpy = XOpenDisplay(\"\"); +-dpy = egldpy; ++dpy = reinterpret_cast(egldpy); + EGLNativeWindowType w = XCreateWindow(dpy, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + XDestroyWindow(dpy, w); + XCloseDisplay(dpy); diff --git a/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-moc-macros.patch b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-moc-macros.patch new file mode 100644 index 0000000000..8f5f4d61b8 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-moc-macros.patch @@ -0,0 +1,16 @@ +diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp +index 1cb383c9..6bfdee55 100644 +--- a/src/tools/moc/main.cpp ++++ b/src/tools/moc/main.cpp +@@ -230,6 +230,11 @@ int runMoc(int argc, char **argv) + Moc moc; + pp.macros["Q_MOC_RUN"]; + pp.macros["__cplusplus"]; ++ pp.macros["_SYS_SYSMACROS_H_OUTER"]; ++ Macro macro; ++ macro.symbols = Preprocessor::tokenize(QByteArray::number(Q_PROCESSOR_WORDSIZE*8), 1, Preprocessor::TokenizeDefine); ++ macro.symbols.removeLast(); // remove the EOF symbol ++ pp.macros.insert("__WORDSIZE", macro); + + // Don't stumble over GCC extensions + Macro dummyVariadicFunctionMacro; diff --git a/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-mysql.patch b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-mysql.patch new file mode 100644 index 0000000000..c190ca67e8 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-mysql.patch @@ -0,0 +1,12 @@ +diff -up qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql.cpp.than qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql.cpp +diff -up qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h.than qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h +--- qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h.than 2017-07-14 13:43:50.831203768 +0200 ++++ qtbase-opensource-src-5.9.0/src/plugins/sqldrivers/mysql/qsql_mysql_p.h 2017-07-14 13:44:24.364948006 +0200 +@@ -58,6 +58,7 @@ + #endif + + #include ++#include + + #ifdef QT_PLUGIN + #define Q_EXPORT_SQLDRIVER_MYSQL diff --git a/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-tell-truth-about-private-api.patch b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-tell-truth-about-private-api.patch new file mode 100644 index 0000000000..33e48ad993 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-tell-truth-about-private-api.patch @@ -0,0 +1,16 @@ +diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf +index 3cacc8df..469e6f50 100644 +--- a/mkspecs/features/qt_module.prf ++++ b/mkspecs/features/qt_module.prf +@@ -218,9 +218,9 @@ android: CONFIG += qt_android_deps no_linker_version_script + QMAKE_LFLAGS += $${QMAKE_LFLAGS_VERSION_SCRIPT}$$verscript + + internal_module { +- verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API { *; };" ++ verscript_content = "Qt_$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}_PRIVATE_API { *; };" + } else { +- verscript_content = "Qt_$${QT_MAJOR_VERSION}_PRIVATE_API {" \ ++ verscript_content = "Qt_$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}_PRIVATE_API {" \ + " qt_private_api_tag*;" + + private_api_headers = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.QPA_HEADER_FILES diff --git a/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-version-check.patch b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-version-check.patch new file mode 100644 index 0000000000..d9c62b87ac --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/fedora/qtbase-version-check.patch @@ -0,0 +1,13 @@ +diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h +index 6e83b78f..6a18cc19 100644 +--- a/src/corelib/global/qglobal.h ++++ b/src/corelib/global/qglobal.h +@@ -59,7 +59,7 @@ + /* + can be used like #if (QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)) + */ +-#define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch)) ++#define QT_VERSION_CHECK(qt_version_check_major, qt_version_check_minor, qt_version_check_patch) ((qt_version_check_major<<16)|(qt_version_check_minor<<8)|(qt_version_check_patch)) + + #ifdef QT_BOOTSTRAPPED + #include diff --git a/desktop/toolkit/qt6/qt6-base/files/mkspecs.patch b/desktop/toolkit/qt6/qt6-base/files/mkspecs.patch new file mode 100755 index 0000000000..336946155e --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/mkspecs.patch @@ -0,0 +1,47 @@ +diff -Nuar a/mkspecs/common/g++-base.conf b/mkspecs/common/g++-base.conf +--- a/mkspecs/common/g++-base.conf 2021-11-15 00:00:01.000000000 +0200 ++++ b/mkspecs/common/g++-base.conf 2021-11-15 22:49:20.969099951 +0200 +@@ -10,15 +10,17 @@ + + QMAKE_COMPILER = gcc + +-QMAKE_CC = $${CROSS_COMPILE}gcc ++QMAKE_CC = PISILINUX_CC + +-QMAKE_LINK_C = $$QMAKE_CC +-QMAKE_LINK_C_SHLIB = $$QMAKE_CC ++QMAKE_LINK_C = PISILINUX_CC ++QMAKE_LINK_C_SHLIB = PISILINUX_CC + +-QMAKE_CXX = $${CROSS_COMPILE}g++ ++QMAKE_CXX = PISILINUX_CXX + +-QMAKE_LINK = $$QMAKE_CXX +-QMAKE_LINK_SHLIB = $$QMAKE_CXX ++QMAKE_LINK = PISILINUX_CXX ++QMAKE_LINK_SHLIB = PISILINUX_CXX ++ ++QMAKE_LFLAGS_RELEASE += PISILINUX_LDFLAGS + + QMAKE_PCH_OUTPUT_EXT = .gch + +diff -Nuar a/mkspecs/common/g++-unix.conf b/mkspecs/common/g++-unix.conf +--- a/mkspecs/common/g++-unix.conf 2021-11-15 00:00:01.000000000 +0200 ++++ b/mkspecs/common/g++-unix.conf 2021-11-15 22:51:51.058450056 +0200 +@@ -10,5 +10,5 @@ + + include(g++-base.conf) + +-QMAKE_LFLAGS_RELEASE += -Wl,-O1 ++QMAKE_LFLAGS_RELEASE += PISILINUX_LDFLAGS + QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined +diff -Nuar a/mkspecs/common/linux.conf b/mkspecs/common/linux.conf +--- a/mkspecs/common/linux.conf 2021-11-15 00:00:01.000000000 +0200 ++++ b/mkspecs/common/linux.conf 2021-11-15 22:52:35.802019704 +0200 +@@ -48,5 +48,5 @@ + QMAKE_NM = nm -P + QMAKE_RANLIB = + +-QMAKE_STRIP = strip ++QMAKE_STRIP = + QMAKE_STRIPFLAGS_LIB += --strip-unneeded diff --git a/desktop/toolkit/qt6/qt6-base/files/qt6-base-nostrip.patch b/desktop/toolkit/qt6/qt6-base/files/qt6-base-nostrip.patch new file mode 100644 index 0000000000..17d24b4b65 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/files/qt6-base-nostrip.patch @@ -0,0 +1,13 @@ +diff --git a/mkspecs/common/gcc-base.conf b/mkspecs/common/gcc-base.conf +index 99d77156fd..fc840fe9f6 100644 +--- a/mkspecs/common/gcc-base.conf ++++ b/mkspecs/common/gcc-base.conf +@@ -31,6 +31,8 @@ + # you can use the manual test in tests/manual/mkspecs. + # + ++CONFIG += nostrip ++ + QMAKE_CFLAGS_OPTIMIZE = -O2 + QMAKE_CFLAGS_OPTIMIZE_FULL = -O3 + QMAKE_CFLAGS_OPTIMIZE_DEBUG = -Og diff --git a/desktop/toolkit/qt6/qt6-base/pspec.xml b/desktop/toolkit/qt6/qt6-base/pspec.xml new file mode 100755 index 0000000000..73c41a816f --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/pspec.xml @@ -0,0 +1,302 @@ + + + + + qt6-base + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Cross platform application and UI framework + Cross platform application and UI development framework + 'GPL3' 'LGPL3' 'FDL' 'custom' + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtbase-everywhere-src-6.4.0.tar.xz + + + + + ninja + cmake + zstd-devel + at-spi2-core-devel + cups-devel + dbus-devel + zlib-devel + glib2-devel + libpcre2-devel + desktop-file-utils + fontconfig-devel + gperf + gtk3-devel + harfbuzz-devel + icon-theme-hicolor + leveldb-devel + firebird-superserver + libjpeg-turbo-devel + mariadb-lib + libxcb-devel + libXcomposite-devel + libxkbcommon-devel + libxslt-devel + mesa-devel + libmtdev-devel + nss-devel + pciutils-devel + postgresql-server + python-devel + DirectFB-devel + libinput-devel + sqlite-devel + xcb-proto + xcb-util-devel + xcb-util-image-devel + xcb-util-keysyms-devel + xcb-util-wm-devel + tiff-devel + libdrm-devel + libpng-devel + eudev-devel + libSM-devel + libICE-devel + libX11-devel + libXext-devel + firebird-devel + unixODBC-devel + libXrandr-devel + libXrender-devel + libXi-devel + xcb-util-renderutil-devel + openssl-devel + freetype-devel + pulseaudio-libs-devel + alsa-lib-devel + libproxy-devel + gst-plugins-base-devel + wayland-devel + wayland-protocols-devel + libXcursor-devel + tslib-devel + shared-mime-info + md4c-devel + libglvnd-devel + vulkan-headers + postgresql-pl + mit-kerberos-devel + double-conversion-devel + icu4c-devel + + + + mkspecs.patch + qt6-base-nostrip.patch + + + + + + + fedora/qtbase-libglvnd.patch + fedora/qtbase-gcc11.patch + + + + + qt6-base + + zstd + gtk3 + pango + libpcre2 + libgcc + cups + dbus + tslib + mesa + zlib + brotli + glib2 + icu4c + libSM + firebird-client + libproxy + libXi + libICE + libX11 + libdrm + libpng + libxcb + eudev + DirectFB + openssl + freetype + harfbuzz + libinput + libmtdev + fontconfig + gdk-pixbuf + libXrender + xcb-util-wm + libxkbcommon + libjpeg-turbo + xcb-util-image + xcb-util-keysyms + double-conversion + xcb-util-renderutil + md4c + mit-kerberos + libglvnd + + + /usr/lib + /usr/lib/qt6/imports + /usr/lib/qt6/qml + /usr/lib/qt6/plugins + /usr/share/qt6/translations + /usr/lib/qt6/bin + /usr/bin + /usr/share/doc + /usr/lib/qt6/mkspecs + /usr/share/qt6/modules + + + + + qt6-base-devel + Development files for Qt 5 + Development files for Qt 5 + + /usr/include + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/lib/*.prl + + + qt6-base + libglvnd-devel + vulkan-headers + libxkbcommon-devel + + + + + + qt6-sql-mysql + + qt6-base + libgcc + mariadb-lib + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlmysql.so + + + + + qt6-sql-postgresql + + qt6-base + libgcc + postgresql-lib + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlpsql.so + + + + + qt6-sql-sqlite + + qt6-base + libgcc + sqlite + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlite.so + + + + + qt6-sql-odbc + + qt6-base + libgcc + unixODBC + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlodbc.so + + + + + + + + 2022-10-03 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-base/translations.xml b/desktop/toolkit/qt6/qt6-base/translations.xml new file mode 100755 index 0000000000..42b119d710 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-base/translations.xml @@ -0,0 +1,45 @@ + + + + qt5-base + Qt5 araç takımı, sürüm 5 + Qt bir çok platformda çalışabilen ve grafiksel kullanıcı arayüzü (GUI) oluşturmaya yarayan bir araç takımıdır. + Qt est une boîte à outils graphique multi-plateforme. + Qt es un toolkit para GUI multiplataforma. + + + + qt5-base-devel + Qt5 için geliştirme dosyaları + + + + qt5-docs + Qt5 için geliştirme belgeleri ve Qt Assistant aracı + + + + qt5-sql-ibase + Qt5'in SQL sınıfları için IBase sürücüsü + + + + qt5-sql-mysql + Qt5'in SQL sınıfları için MySQL sürücüsü + + + + qt5-sql-odbc + Qt5'in SQL sınıfları için ODBC sürücüsü + + + + qt5-sql-postgresql + Qt5'in SQL sınıfları için PostgreSQL sürücüsü + + + + qt5-sql-sqlite + Qt5'in SQL sınıfları için SQLite sürücüsü + + \ No newline at end of file diff --git a/desktop/toolkit/qt6/qt6-charts/actions.py b/desktop/toolkit/qt6/qt6-charts/actions.py new file mode 100755 index 0000000000..b486d40837 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-charts/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-charts/pspec.xml b/desktop/toolkit/qt6/qt6-charts/pspec.xml new file mode 100755 index 0000000000..b5ff00d282 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-charts/pspec.xml @@ -0,0 +1,62 @@ + + + + + qt6-charts + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + GPL3 + Provides a set of easy to use chart components + Provides a set of easy to use chart components + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtcharts-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + + + qt6-charts + Provides a set of easy to use chart components + + qt6-base + qt6-declarative + libgcc + + + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-charts-devel + Development files for qt6-charts + + qt6-charts + qt6-base-devel + qt6-declarative-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-connectivity/actions.py b/desktop/toolkit/qt6/qt6-connectivity/actions.py new file mode 100755 index 0000000000..0fa7d330cb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-connectivity/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + # qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-connectivity/pspec.xml b/desktop/toolkit/qt6/qt6-connectivity/pspec.xml new file mode 100755 index 0000000000..1c4ea5b562 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-connectivity/pspec.xml @@ -0,0 +1,66 @@ + + + + + qt6-connectivity + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Provides access to Bluetooth hardware + Provides access to Bluetooth hardware + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtconnectivity-everywhere-src-6.4.0.tar.xz + + ninja + cmake + pcsc-lite-devel + bluez-libs-devel + qt6-sql-sqlite + qt6-base-devel + + qt6-declarative-devel + + + + + qt6-connectivity + + pcsc-lite + bluez-libs + qt6-base + qt6-declarative + + + /usr/bin + /usr/lib + /usr/share/doc/qt6-connectivity + /usr/lib/qt6 + /usr/lib/qt6/bin/ + /usr/share/qt6/modules + + + + + qt6-connectivity-devel + + /usr/lib/pkgconfig + /usr/include/qt6 + + + qt6-connectivity + qt6-base-devel + + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-connectivity/translations.xml b/desktop/toolkit/qt6/qt6-connectivity/translations.xml new file mode 100755 index 0000000000..a0e006bb92 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-connectivity/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-connectivity + Bluetooth donanımlarına bağlantı sağlar + Bluetooth donanımlarına bağlantı sağlar + + + + qt5-connectivity-devel + qt5-connectivity için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-datavis3d/actions.py b/desktop/toolkit/qt6/qt6-datavis3d/actions.py new file mode 100755 index 0000000000..b5a1b897c2 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-datavis3d/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") + + diff --git a/desktop/toolkit/qt6/qt6-datavis3d/pspec.xml b/desktop/toolkit/qt6/qt6-datavis3d/pspec.xml new file mode 100755 index 0000000000..153e5cab04 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-datavis3d/pspec.xml @@ -0,0 +1,63 @@ + + + + + qt6-datavis3d + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + GPL3 + desktop + Provides a set of easy to use chart components + Qt Data Visualization module + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtdatavis3d-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + + + qt6-datavis3d + Qt Data Visualization module + + qt6-base + qt6-declarative + libgcc + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-datavis3d-devel + Development files for qt6-datavis3d + + qt6-base-devel + qt6-declarative-devel + qt6-datavis3d + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-declarative/actions.py b/desktop/toolkit/qt6/qt6-declarative/actions.py new file mode 100755 index 0000000000..ae1fe4d9a8 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-declarative/actions.py @@ -0,0 +1,38 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +#NoStrip = "/" + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + # shelltools.system("sed -i 's/python /python3 /' qtdeclarative.pro \ + # src/3rdparty/masm/masm.pri") + #shelltools.system("sed -i 's/python /python3 /' qtdeclarative/src/3rdparty/masm/masm.pri") + # shelltools.export("CFLAGS", "CXXFLAGS") + qt6.configure("-DQT_FEATURE_system_freetype=ON") + +def build(): + qt6.make() + #qt6.make("docs") + +def install(): + #pisitools.insinto("/usr/lib/qt6/qml", "qml/QtQml") + #pisitools.insinto("/usr/lib/qt6/qml", "qml/Qt") + #pisitools.insinto("/usr/lib/qt6/qml", "qml/QtQuick") + #pisitools.insinto("/usr/lib/qt6/qml", "qml/QtQuick.2") + #pisitools.insinto("/usr/lib/qt6/qml", "qml/QtTest") + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.insinto("/usr/share/licenses/qt6-declarative/", "LICENSE*") diff --git a/desktop/toolkit/qt6/qt6-declarative/pspec.xml b/desktop/toolkit/qt6/qt6-declarative/pspec.xml new file mode 100755 index 0000000000..0d6459d0f7 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-declarative/pspec.xml @@ -0,0 +1,83 @@ + + + + + qt6-declarative + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Classes for QML and JavaScript languages + Classes for QML and JavaScript languages + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtdeclarative-everywhere-src-6.4.0.tar.xz + + ninja + cmake + python3 + libxkbcommon-devel + mesa-devel + qt6-sql-sqlite + qt6-base-devel + qt6-languageserver-devel + + + + + + + + qt6-declarative + + libgcc + + qt6-base + qt6-languageserver + libglvnd + + + + /usr/lib + /usr/lib/qt6 + /usr/share/licenses + /usr/lib/qt6/bin + /usr/bin/ + /usr/share/qt6/modules + + + + + + qt6-declarative-devel + + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/include/qt6 + + + qt6-base-devel + qt6-declarative + + + + + + + + 2022-10-05 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-declarative/translations.xml b/desktop/toolkit/qt6/qt6-declarative/translations.xml new file mode 100755 index 0000000000..1b57242749 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-declarative/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-declarative + QML ve JavaScript dilleri için sınıflar + QML ve JavaScript dilleri için sınıflar + + + + qt5-declarative-devel + qt5-declarative için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-doc/actions.py b/desktop/toolkit/qt6/qt6-doc/actions.py new file mode 100755 index 0000000000..d4d8b47359 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-doc/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make("docs") + # qt6.make("docs") + +def install(): + qt6.install("install_docs") + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-doc/pspec.xml b/desktop/toolkit/qt6/qt6-doc/pspec.xml new file mode 100755 index 0000000000..d45976f20c --- /dev/null +++ b/desktop/toolkit/qt6/qt6-doc/pspec.xml @@ -0,0 +1,68 @@ + + + + + qt6-doc + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + assistant5 + A cross-platform application and UI framework (Documentation) + A cross-platform application and UI framework (Documentation) + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtdoc-everywhere-src-6.4.0.tar.xz + + ninja + cmake + + + + + + qt6-doc + + qt6-base + qt6-script + qt6-svg + qt6-xmlpatterns + qt6-assistant + qt6-declarative + + + /usr/share/doc + /usr/share/doc/qt6 + /usr/lib/qt6/mkspecs/ + + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-doc/translations.xml b/desktop/toolkit/qt6/qt6-doc/translations.xml new file mode 100755 index 0000000000..0474f82041 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-doc/translations.xml @@ -0,0 +1,8 @@ + + + + qt5-doc + Qt bir çok platformda çalışabilen ve grafiksel kullanıcı arayüzü (GUI) oluşturmaya yarayan bir araç takımıdır(Belgelendirme) + Qt bir çok platformda çalışabilen ve grafiksel kullanıcı arayüzü (GUI) oluşturmaya yarayan bir araç takımıdır(Belgelendirme) + + diff --git a/desktop/toolkit/qt6/qt6-httpserver/actions.py b/desktop/toolkit/qt6/qt6-httpserver/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-httpserver/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-httpserver/pspec.xml b/desktop/toolkit/qt6/qt6-httpserver/pspec.xml new file mode 100644 index 0000000000..5794f6f8bd --- /dev/null +++ b/desktop/toolkit/qt6/qt6-httpserver/pspec.xml @@ -0,0 +1,69 @@ + + + + + qt6-httpserver + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + Qt HTTP Server + qt6-httpserver + Qt HTTP Server + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qthttpserver-everywhere-src-6.4.0.tar.xz + + cmake + ninja + qt6-base-devel + qt6-websockets-devel + + + + + + qt6-httpserver + + qt6-base + qt6-websockets + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules/ + + + + + qt6-httpserver-devel + Development files for qt6-httpserver + + qt6-httpserver + qt6-base-devel + qt6-websockets-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-httpserver/translations.xml b/desktop/toolkit/qt6/qt6-httpserver/translations.xml new file mode 100644 index 0000000000..b7417f564b --- /dev/null +++ b/desktop/toolkit/qt6/qt6-httpserver/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-httpserver + Qt HTTP Server + Qt HTTP Server + + diff --git a/desktop/toolkit/qt6/qt6-imageformats/actions.py b/desktop/toolkit/qt6/qt6-imageformats/actions.py new file mode 100755 index 0000000000..c094d0753e --- /dev/null +++ b/desktop/toolkit/qt6/qt6-imageformats/actions.py @@ -0,0 +1,47 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +bindirQt6="/usr/lib/qt6/bin" + +def setup(): + options = " -DCMAKE_INSTALL_PREFIX=%s \ + -DCMAKE_BUILD_TYPE=Release \ + -DINSTALL_BINDIR=%s \ + -DINSTALL_INCLUDEDIR=%s \ + -DINSTALL_ARCHDATADIR=%s \ + -DINSTALL_DOCDIR=%s \ + -DINSTALL_DATADIR=%s \ + -DINSTALL_MKSPECSDIR=%s \ + -DINSTALL_EXAMPLESDIR=%s \ + -DQT_FEATURE_libproxy=ON \ + -DQT_FEATURE_vulkan=ON \ + -DQT_FEATURE_system_freetype=ON \ + -DQT_FEATURE_system_harfbuzz=ON \ + -DQT_FEATURE_system_sqlite=ON \ + -DQT_FEATURE_dbus_linked=ON \ + -DQT_FEATURE_openssl_linked=ON" % (qt6.prefix, bindirQt6, qt6.headerdir, qt6.archdatadir, qt6.docdir, qt6.datadir, qt6.mkspecsdir, qt6.examplesdir) + + cmaketools.configure(options) + +def build(): + qt6.make() + #qt6.make("docs") + +def install(): + qt6.install("INSTALL_ROOT=%s" % get.installDIR()) + + #I hope qtchooser will manage this issue + #for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + #pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSE*") diff --git a/desktop/toolkit/qt6/qt6-imageformats/pspec.xml b/desktop/toolkit/qt6/qt6-imageformats/pspec.xml new file mode 100755 index 0000000000..0fc95c974e --- /dev/null +++ b/desktop/toolkit/qt6/qt6-imageformats/pspec.xml @@ -0,0 +1,67 @@ + + + + + qt6-imageformats + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Plugins for additional image formats: TIFF, MNG, TGA, WBMP + Plugins for additional image formats: TIFF, MNG, TGA, WBMP + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtimageformats-everywhere-src-6.4.0.tar.xz + + cmake + libxkbcommon-devel + vulkan-headers + jasper-devel + libmng-devel + zlib-devel + tiff-devel + webp-devel + libjpeg-turbo-devel + qt6-base-devel + qt6-sql-sqlite + + + + + qt6-imageformats + + qt6-base + libgcc + + tiff + webp + jasper + + + /usr/lib + /usr/lib/qt6 + /usr/share/licenses + /usr/share/doc + + + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-imageformats/translations.xml b/desktop/toolkit/qt6/qt6-imageformats/translations.xml new file mode 100755 index 0000000000..18c57a1d38 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-imageformats/translations.xml @@ -0,0 +1,8 @@ + + + + qt5-imageformats + İlave resim biçimleri için eklentiler: TIFF, MNG, TGA, WBMP + İlave resim biçimleri için eklentiler: TIFF, MNG, TGA, WBMP + + diff --git a/desktop/toolkit/qt6/qt6-keychain/actions.py b/desktop/toolkit/qt6/qt6-keychain/actions.py new file mode 100755 index 0000000000..7d6ffa24bb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-keychain/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import kde5 +from pisi.actionsapi import cmaketools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + + +def setup(): + cmaketools.configure("-B build-qt6 -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DECM_MKSPECS_INSTALL_DIR=/usr/lib/qt6/mkspecs/modules \ + -DBUILD_WITH_QT6=ON") + +def build(): + cmaketools.make("-C build-qt6") + +def install(): + cmaketools.install("-C build-qt6 DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "ReadMe*") + diff --git a/desktop/toolkit/qt6/qt6-keychain/pspec.xml b/desktop/toolkit/qt6/qt6-keychain/pspec.xml new file mode 100755 index 0000000000..b7854ee39e --- /dev/null +++ b/desktop/toolkit/qt6/qt6-keychain/pspec.xml @@ -0,0 +1,59 @@ + + + + + qt6-keychain + https://github.com/frankosterfeld/qtkeychain + + Stefan Gronewold + groni@pisilinux.org + + BSD + Provides support for secure credentials storage + Qt5-Keychain is a Qt API to store passwords and other secret data securely. How the data is stored depends on the platform + https://github.com/frankosterfeld/qtkeychain/archive/v0.13.2.tar.gz + + cmake + glib2-devel + qt6-assistant-devel + qt6-base-devel + qt6-designer-devel + qt6-linguist + + + + qt6-keychain + Provides support for secure credentials storage + + glib2 + libgcc + qt6-base + + + /usr/lib + /usr/share + /usr/share/doc + + + + + qt6-keychain-devel + Development support for qt6-keychain + + qt6-keychain + + + /usr/lib/cmake + /usr/include + + + + + 2022-10-07 + 0.13.2 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-languageserver/actions.py b/desktop/toolkit/qt6/qt6-languageserver/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-languageserver/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-languageserver/pspec.xml b/desktop/toolkit/qt6/qt6-languageserver/pspec.xml new file mode 100644 index 0000000000..95eb654b39 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-languageserver/pspec.xml @@ -0,0 +1,65 @@ + + + + + qt6-languageserver + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + FDL, GPL3 + library + An implementation of the Language Server Protocol + qt6-languageserver + An implementation of the Language Server Protocol + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtlanguageserver-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + + --> + + + + + qt6-languageserver + + qt6-base-devel + + + /usr/lib + /usr/share + /usr/share/doc + + + + + qt6-languageserver-devel + Development files for qt6-languageserver + + qt6-languageserver + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-06 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-languageserver/translations.xml b/desktop/toolkit/qt6/qt6-languageserver/translations.xml new file mode 100644 index 0000000000..0c559ff2b9 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-languageserver/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-languageserver + An implementation of the Language Server Protocol + An implementation of the Language Server Protocol + + diff --git a/desktop/toolkit/qt6/qt6-lottie/actions.py b/desktop/toolkit/qt6/qt6-lottie/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-lottie/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-lottie/pspec.xml b/desktop/toolkit/qt6/qt6-lottie/pspec.xml new file mode 100644 index 0000000000..9d175c8ac2 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-lottie/pspec.xml @@ -0,0 +1,67 @@ + + + + + qt6-lottie + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + A family of player software for a certain json-based file format for describing 2d vector graphics animations + qt6-lottie + A family of player software for a certain json-based file format for describing 2d vector graphics animations + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtlottie-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + + + + + qt6-lottie + + qt6-base + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules/ + + + + + qt6-lottie-devel + Development files for qt6-lottie + + qt6-lottie + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-lottie/translations.xml b/desktop/toolkit/qt6/qt6-lottie/translations.xml new file mode 100644 index 0000000000..216b950e6c --- /dev/null +++ b/desktop/toolkit/qt6/qt6-lottie/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-lottie + A family of player software for a certain json-based file format for describing 2d vector graphics animations + A family of player software for a certain json-based file format for describing 2d vector graphics animations + + diff --git a/desktop/toolkit/qt6/qt6-multimedia/actions.py b/desktop/toolkit/qt6/qt6-multimedia/actions.py new file mode 100755 index 0000000000..0fa7d330cb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-multimedia/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + # qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-multimedia/pspec.xml b/desktop/toolkit/qt6/qt6-multimedia/pspec.xml new file mode 100755 index 0000000000..ef69d57185 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-multimedia/pspec.xml @@ -0,0 +1,83 @@ + + + + + qt6-multimedia + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Classes for audio, video, radio and camera functionality + Classes for audio, video, radio and camera functionality + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtmultimedia-everywhere-src-6.4.0.tar.xz + + ninja + cmake + icu4c-devel + libva-devel + ffmpeg-devel + openal-devel + libglvnd-devel + alsa-lib-devel + gstreamer-devel + pulseaudio-libs-devel + gst-plugins-bad-devel + mesa-devel + qt6-sql-sqlite + qt6-base-devel + qt6-shadertools-devel + qt6-declarative-devel + gst-plugins-base-devel + + + + + qt6-multimedia + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + glib2 + libgcc + openal + libva + ffmpeg + libglvnd + alsa-lib + gstreamer + gst-plugins-bad + pulseaudio-libs + qt6-base + qt6-declarative + gst-plugins-base + + + + + qt6-multimedia-devel + + /usr/lib/pkgconfig + /usr/include/qt6 + + + qt6-multimedia + qt6-base-devel + qt6-declarative-devel + + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-multimedia/translations.xml b/desktop/toolkit/qt6/qt6-multimedia/translations.xml new file mode 100755 index 0000000000..5f027873fb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-multimedia/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-multimedia + Ses, video, radyo ve kamera işlevsellikleri için sınıflar + Ses, video, radyo ve kamera işlevsellikleri için sınıflar + + + + qt5-multimedia-devel + qt5-multimedia için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-networkauth/actions.py b/desktop/toolkit/qt6/qt6-networkauth/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-networkauth/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-networkauth/pspec.xml b/desktop/toolkit/qt6/qt6-networkauth/pspec.xml new file mode 100644 index 0000000000..ac319764eb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-networkauth/pspec.xml @@ -0,0 +1,57 @@ + + + + + qt6-networkauth + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + 'GPL3' 'LGPL3' 'FDL' 'custom' + app:gui + Network authentication module + Ağ kimlik doğrulama modülü + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtnetworkauth-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + + + + + qt6-networkauth + + qt6-base + + + /usr/lib + /usr/share + + + + + qt6-networkauth-devel + Development files for qt6-networkauth + + qt6-networkauth + qt6-base-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-networkauth/translations.xml b/desktop/toolkit/qt6/qt6-networkauth/translations.xml new file mode 100644 index 0000000000..1e8d77290f --- /dev/null +++ b/desktop/toolkit/qt6/qt6-networkauth/translations.xml @@ -0,0 +1,8 @@ + + + + qt5-networkauth + Ağ kimlik doğrulama modülü + Ağ kimlik doğrulama modülü + + diff --git a/desktop/toolkit/qt6/qt6-positioning/actions.py b/desktop/toolkit/qt6/qt6-positioning/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-positioning/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-positioning/pspec.xml b/desktop/toolkit/qt6/qt6-positioning/pspec.xml new file mode 100644 index 0000000000..2f2a5d4e9b --- /dev/null +++ b/desktop/toolkit/qt6/qt6-positioning/pspec.xml @@ -0,0 +1,75 @@ + + + + + qt6-positioning + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + Provides access to position, satellite and area monitoring classes + qt6-positioning + Provides access to position, satellite and area monitoring classes + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtpositioning-everywhere-src-6.4.0.tar.xz + + ninja + cmake + gconf-devel + glib2-devel + gypsy-devel + qt6-base-devel + qt6-declarative-devel + + + + + + qt6-positioning + + gconf + glib2 + gypsy + qt6-base + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules/ + + + + + qt6-positioning-devel + Development files for qt6-positioning + + qt6-positioning + qt6-base-devel + qt6-declarative-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-positioning/translations.xml b/desktop/toolkit/qt6/qt6-positioning/translations.xml new file mode 100644 index 0000000000..fb943a575c --- /dev/null +++ b/desktop/toolkit/qt6/qt6-positioning/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-positioning + Provides access to position, satellite and area monitoring classes + Provides access to position, satellite and area monitoring classes + + diff --git a/desktop/toolkit/qt6/qt6-quick3d/actions.py b/desktop/toolkit/qt6/qt6-quick3d/actions.py new file mode 100755 index 0000000000..655dde01eb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quick3d/actions.py @@ -0,0 +1,32 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + + +def setup(): + shelltools.export("CC", "gcc") + shelltools.export("CXX", "g++") + shelltools.export("LDFLAGS", "%s" % get.LDFLAGS()) + # pisitools.cflags.remove("-lto-wrapper") + # pisitools.cxxflags.remove("-lto-wrapper") + # pisitools.cflags.add(" -ffat-lto-objects") + # pisitools.cxxflags.add(" -ffat-lto-objects") + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSE.GPL*") diff --git a/desktop/toolkit/qt6/qt6-quick3d/files/qtquick3d-fix-build-with-gcc11.patch b/desktop/toolkit/qt6/qt6-quick3d/files/qtquick3d-fix-build-with-gcc11.patch new file mode 100644 index 0000000000..f389f777b0 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quick3d/files/qtquick3d-fix-build-with-gcc11.patch @@ -0,0 +1,24 @@ +diff --git a/src/3rdparty/assimp/src/code/Common/Importer.cpp b/src/3rdparty/assimp/src/code/Common/Importer.cpp +index a2ad041..6f2438f 100644 +--- a/src/3rdparty/assimp/src/code/Common/Importer.cpp ++++ b/src/3rdparty/assimp/src/code/Common/Importer.cpp +@@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #include + #include + #include ++#include + + // ------------------------------------------------------------------------------------------------ + /* Uncomment this line to prevent Assimp from catching unknown exceptions. +diff --git a/src/3rdparty/assimp/src/include/assimp/Importer.hpp b/src/3rdparty/assimp/src/include/assimp/Importer.hpp +index 09b5b68..89eb071 100644 +--- a/src/3rdparty/assimp/src/include/assimp/Importer.hpp ++++ b/src/3rdparty/assimp/src/include/assimp/Importer.hpp +@@ -58,6 +58,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + // Public ASSIMP data structures + #include ++#include + + #include + diff --git a/desktop/toolkit/qt6/qt6-quick3d/files/x.patch b/desktop/toolkit/qt6/qt6-quick3d/files/x.patch new file mode 100644 index 0000000000..7c13e58d6a --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quick3d/files/x.patch @@ -0,0 +1,1480 @@ +If an entity uses a QBoundingVolume and a QGeometryView, compute +the bounding volume data in the core aspect. All other cases will +still happen in the render aspect. + +Result not currently used (ie it's done again in render aspect). + +Change-Id: I4b5ed21bac42b79777c3112aa76d876ac5b6f52d +Reviewed-by: Paul Lemire +14 files changed: +src/core/aspect/qcoreaspect.cpp patch | blob | history +src/core/aspect/qcoreaspect.h patch | blob | history +src/core/aspect/qcoreaspect_p.h patch | blob | history +src/core/core.pro patch | blob | history +src/core/geometry/bufferutils_p.h [new file with mode: 0644] patch | blob +src/core/geometry/buffervisitor_p.h [new file with mode: 0644] patch | blob +src/core/geometry/geometry.pri patch | blob | history +src/core/geometry/qgeometry_p.h patch | blob | history +src/core/geometry/qgeometryview.cpp patch | blob | history +src/core/geometry/qgeometryview_p.h patch | blob | history +src/core/jobs/calcboundingvolumejob.cpp [new file with mode: 0644] patch | blob +src/core/jobs/calcboundingvolumejob_p.h [new file with mode: 0644] patch | blob +src/core/jobs/job_common_p.h [new file with mode: 0644] patch | blob +src/core/jobs/jobs.pri patch | blob | history + +diff --git a/src/core/aspect/qcoreaspect.cpp b/src/core/aspect/qcoreaspect.cpp +index 48f9aaf..dc3566e 100644 (file) +--- a/src/core/aspect/qcoreaspect.cpp ++++ b/src/core/aspect/qcoreaspect.cpp +@@ -39,12 +39,16 @@ + + #include "qcoreaspect.h" + #include "qcoreaspect_p.h" ++#include ++#include ++#include + + QT_BEGIN_NAMESPACE + + using namespace Qt3DCore; + + QCoreAspectPrivate::QCoreAspectPrivate() ++ : Qt3DCore::QAbstractAspectPrivate() + { + + } +@@ -65,7 +69,7 @@ void QCoreAspectPrivate::frameDone() + } + + QCoreAspect::QCoreAspect(QObject *parent) +- : Qt3DCore::QAbstractAspect(parent) ++ : Qt3DCore::QAbstractAspect(*new QCoreAspectPrivate, parent) + { + + } +@@ -75,10 +79,28 @@ QCoreAspect::~QCoreAspect() + + } + ++QAspectJobPtr QCoreAspect::calculateBoundingVolumeJob() const ++{ ++ Q_D(const QCoreAspect); ++ return d->m_calculateBoundingVolumeJob; ++} ++ + QVector QCoreAspect::jobsToExecute(qint64 time) + { ++ Q_D(QCoreAspect); + Q_UNUSED(time) +- return {}; ++ ++ QVector jobs; ++ ++ auto scene = d->m_aspectManager->scene(); ++ auto dirtyBits = scene->dirtyBits(); ++ ++ if (dirtyBits & QScene::GeometryDirty || ++ dirtyBits & QScene::BuffersDirty) { ++ jobs.push_back(d->m_calculateBoundingVolumeJob); ++ } ++ ++ return jobs; + } + + QVariant QCoreAspect::executeCommand(const QStringList &args) +@@ -89,12 +111,25 @@ QVariant QCoreAspect::executeCommand(const QStringList &args) + + void QCoreAspect::onRegistered() + { ++ Q_D(QCoreAspect); + ++ if (d->m_calculateBoundingVolumeJob.isNull()) ++ d->m_calculateBoundingVolumeJob = CalculateBoundingVolumeJobPtr::create(); + } + +-void QCoreAspect::onUnregistered() ++void QCoreAspect::onEngineStartup() + { ++ Q_D(QCoreAspect); + ++ Q_ASSERT(d->m_calculateBoundingVolumeJob); ++ d->m_calculateBoundingVolumeJob->setRoot(d->m_root); ++} ++ ++void QCoreAspect::frameDone() ++{ ++ Q_D(QCoreAspect); ++ auto scene = d->m_aspectManager->scene(); ++ scene->clearDirtyBits(); + } + + QT_END_NAMESPACE +diff --git a/src/core/aspect/qcoreaspect.h b/src/core/aspect/qcoreaspect.h +index 27c72f4..071b738 100644 (file) +--- a/src/core/aspect/qcoreaspect.h ++++ b/src/core/aspect/qcoreaspect.h +@@ -55,6 +55,8 @@ public: + explicit QCoreAspect(QObject *parent = nullptr); + ~QCoreAspect(); + ++ QAspectJobPtr calculateBoundingVolumeJob() const; ++ + protected: + Q_DECLARE_PRIVATE(QCoreAspect) + +@@ -62,7 +64,8 @@ private: + QVector jobsToExecute(qint64 time) override; + QVariant executeCommand(const QStringList &args) override; + void onRegistered() override; +- void onUnregistered() override; ++ void onEngineStartup() override; ++ void frameDone() override; + }; + + } +diff --git a/src/core/aspect/qcoreaspect_p.h b/src/core/aspect/qcoreaspect_p.h +index ca665fa..cda0a14 100644 (file) +--- a/src/core/aspect/qcoreaspect_p.h ++++ b/src/core/aspect/qcoreaspect_p.h +@@ -55,10 +55,15 @@ + #include + #include + ++#include ++ + QT_BEGIN_NAMESPACE + + namespace Qt3DCore { + ++class CalculateBoundingVolumeJob; ++using CalculateBoundingVolumeJobPtr = QSharedPointer; ++ + class Q_3DCORE_PRIVATE_EXPORT QCoreAspectPrivate : public Qt3DCore::QAbstractAspectPrivate + { + public: +@@ -71,6 +76,7 @@ public: + void frameDone() override; + + bool m_initialized; ++ CalculateBoundingVolumeJobPtr m_calculateBoundingVolumeJob; + }; + + } +diff --git a/src/core/core.pro b/src/core/core.pro +index b149497..846e9d8 100644 (file) +--- a/src/core/core.pro ++++ b/src/core/core.pro +@@ -1,7 +1,8 @@ +-TARGET = Qt3DCore +-MODULE = 3dcore ++TARGET = Qt3DCore ++MODULE = 3dcore + +-QT = core-private gui-private network ++QT = core-private gui-private network ++QT_FOR_PRIVATE = concurrent + + gcov { + QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage +diff --git a/src/core/geometry/bufferutils_p.h b/src/core/geometry/bufferutils_p.h +new file mode 100644 (file) +index 0000000..1b83d99 +--- /dev/null ++++ b/src/core/geometry/bufferutils_p.h +@@ -0,0 +1,113 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 Paul Lemire paul.lemire350@gmail.com ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_BUFFERUTILS_P_H ++#define QT3DCORE_BUFFERUTILS_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of other Qt classes. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++ ++namespace Qt3DCore { ++ ++class QGeometryView; ++class QBuffer; ++ ++struct BufferInfo ++{ ++ BufferInfo() ++ : type(Qt3DCore::QAttribute::VertexBaseType::Float) ++ , dataSize(0) ++ , count(0) ++ , byteStride(0) ++ , byteOffset(0) ++ , restartEnabled(false) ++ , restartIndexValue(-1) ++ {} ++ ++ QByteArray data; ++ Qt3DCore::QAttribute::VertexBaseType type; ++ uint dataSize; ++ uint count; ++ uint byteStride; ++ uint byteOffset; ++ bool restartEnabled; ++ int restartIndexValue; ++}; ++ ++ ++namespace BufferTypeInfo { ++ ++ template struct EnumToType; ++ template <> struct EnumToType { typedef const char type; }; ++ template <> struct EnumToType { typedef const uchar type; }; ++ template <> struct EnumToType { typedef const short type; }; ++ template <> struct EnumToType { typedef const ushort type; }; ++ template <> struct EnumToType { typedef const int type; }; ++ template <> struct EnumToType { typedef const uint type; }; ++ template <> struct EnumToType { typedef const float type; }; ++ template <> struct EnumToType { typedef const double type; }; ++ ++ template ++ typename EnumToType::type *castToType(const QByteArray &u, uint byteOffset) ++ { ++ return reinterpret_cast< typename EnumToType::type *>(u.constData() + byteOffset); ++ } ++ ++} // namespace BufferTypeInfo ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++ ++#endif // QT3DCORE_BUFFERUTILS_P_H +diff --git a/src/core/geometry/buffervisitor_p.h b/src/core/geometry/buffervisitor_p.h +new file mode 100644 (file) +index 0000000..69cfb9b +--- /dev/null ++++ b/src/core/geometry/buffervisitor_p.h +@@ -0,0 +1,285 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_BUFFERVISITOR_P_H ++#define QT3DCORE_BUFFERVISITOR_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of other Qt classes. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++class QEntity; ++ ++template ++class Q_AUTOTEST_EXPORT BufferVisitor ++{ ++public: ++ explicit BufferVisitor() = default; ++ virtual ~BufferVisitor() = default; ++ ++ virtual void visit(uint ndx, ValueType x) { ++ Q_UNUSED(ndx) Q_UNUSED(x) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y, ValueType z) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) Q_UNUSED(z) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y, ValueType z, ValueType w) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) Q_UNUSED(z) Q_UNUSED(w) ++ } ++ ++ bool apply(QAttribute *attribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ if (attribute->vertexBaseType() != VertexBaseType) ++ return false; ++ if (attribute->vertexSize() < dataSize) ++ return false; ++ ++ auto data = attribute->buffer()->data(); ++ auto vertexBuffer = BufferTypeInfo::castToType(data, attribute->byteOffset()); ++ ++ if (indexAttribute) { ++ auto indexData = indexAttribute->buffer()->data(); ++ switch (indexAttribute->vertexBaseType()) { ++ case Qt3DCore::QAttribute::UnsignedShort: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ case Qt3DCore::QAttribute::UnsignedInt: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ case Qt3DCore::QAttribute::UnsignedByte: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ default: Q_UNREACHABLE(); ++ } ++ } else { ++ switch (dataSize) { ++ case 1: traverseCoordinates1(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 2: traverseCoordinates2(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 3: traverseCoordinates3(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 4: traverseCoordinates4(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ default: Q_UNREACHABLE(); ++ } ++ } ++ ++ return true; ++ } ++ ++protected: ++ template ++ void traverseCoordinateIndexed(VertexBufferType *vertexBuffer, ++ IndexBufferType *indexBuffer, ++ int vertexByteStride, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ switch (dataSize) { ++ case 1: traverseCoordinates1Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 2: traverseCoordinates2Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 3: traverseCoordinates3Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 4: traverseCoordinates4Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ default: Q_UNREACHABLE(); ++ } ++ } ++ ++ template ++ void traverseCoordinates1(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride / sizeof(Coordinate); ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates1Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride / sizeof(Coordinate); ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates2(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 2; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1]); ++ coordinates += stride; ++ } ++ } ++ ++ ++ template ++ void traverseCoordinates2Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 2; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates3(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 3; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1], coordinates[2]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates3Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 3; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1], coordinates[n + 2]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates4(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 4; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1], coordinates[2], coordinates[3]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates4Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 4; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1], coordinates[n + 2], coordinates[n + 3]); ++ } ++ } ++ } ++}; ++ ++typedef BufferVisitor Buffer3fVisitor; ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++ ++#endif // QT3DCORE_BUFFERVISITOR_P_H +diff --git a/src/core/geometry/geometry.pri b/src/core/geometry/geometry.pri +index eadf7ca..70bda07 100644 (file) +--- a/src/core/geometry/geometry.pri ++++ b/src/core/geometry/geometry.pri +@@ -12,7 +12,9 @@ HEADERS += \ + $$PWD/qgeometry.h \ + $$PWD/qgeometryfactory_p.h \ + $$PWD/qgeometryview_p.h \ +- $$PWD/qgeometryview.h ++ $$PWD/qgeometryview.h \ ++ $$PWD/bufferutils_p.h \ ++ $$PWD/buffervisitor_p.h + + SOURCES += \ + $$PWD/qabstractfunctor.cpp \ +diff --git a/src/core/geometry/qgeometry_p.h b/src/core/geometry/qgeometry_p.h +index 2a05b5b..ed13b3f 100644 (file) +--- a/src/core/geometry/qgeometry_p.h ++++ b/src/core/geometry/qgeometry_p.h +@@ -72,7 +72,6 @@ public: + void setScene(QScene *scene) override; + void update() override; + void setExtent(const QVector3D &minExtent, const QVector3D &maxExtent); +- + static QGeometryPrivate *get(QGeometry *q); + + QVector m_attributes; +diff --git a/src/core/geometry/qgeometryview.cpp b/src/core/geometry/qgeometryview.cpp +index 65e30d9..258448b 100644 (file) +--- a/src/core/geometry/qgeometryview.cpp ++++ b/src/core/geometry/qgeometryview.cpp +@@ -39,11 +39,250 @@ + + #include "qgeometryview.h" + #include "qgeometryview_p.h" ++#include "qgeometry_p.h" ++#include "buffervisitor_p.h" ++ ++#include ++#include ++#include + + QT_BEGIN_NAMESPACE + + using namespace Qt3DCore; + ++namespace { ++ ++class FindExtremePoints : public Buffer3fVisitor ++{ ++public: ++ FindExtremePoints() ++ : Buffer3fVisitor() ++ , xMin(0.0f), xMax(0.0f), yMin(0.0f), yMax(0.0f), zMin(0.0f), zMax(0.0f) ++ { } ++ ++ float xMin, xMax, yMin, yMax, zMin, zMax; ++ Vector3D xMinPt, xMaxPt, yMinPt, yMaxPt, zMinPt, zMaxPt; ++ ++ void visit(uint ndx, float x, float y, float z) override ++ { ++ if (ndx) { ++ if (x < xMin) { ++ xMin = x; ++ xMinPt = Vector3D(x, y, z); ++ } ++ if (x > xMax) { ++ xMax = x; ++ xMaxPt = Vector3D(x, y, z); ++ } ++ if (y < yMin) { ++ yMin = y; ++ yMinPt = Vector3D(x, y, z); ++ } ++ if (y > yMax) { ++ yMax = y; ++ yMaxPt = Vector3D(x, y, z); ++ } ++ if (z < zMin) { ++ zMin = z; ++ zMinPt = Vector3D(x, y, z); ++ } ++ if (z > zMax) { ++ zMax = z; ++ zMaxPt = Vector3D(x, y, z); ++ } ++ } else { ++ xMin = xMax = x; ++ yMin = yMax = y; ++ zMin = zMax = z; ++ xMinPt = xMaxPt = yMinPt = yMaxPt = zMinPt = zMaxPt = Vector3D(x, y, z); ++ } ++ } ++}; ++ ++class FindMaxDistantPoint : public Buffer3fVisitor ++{ ++public: ++ FindMaxDistantPoint() ++ : Buffer3fVisitor() ++ { } ++ ++ float maxLengthSquared = 0.0f; ++ bool setReferencePoint = false; ++ bool hasNoPoints = true; ++ Vector3D maxDistPt; ++ Vector3D referencePt; ++ ++ void visit(uint ndx, float x, float y, float z) override ++ { ++ Q_UNUSED(ndx) ++ const Vector3D p = Vector3D(x, y, z); ++ ++ if (hasNoPoints && setReferencePoint) { ++ maxLengthSquared = 0.0f; ++ referencePt = p; ++ } ++ const float lengthSquared = (p - referencePt).lengthSquared(); ++ if ( lengthSquared >= maxLengthSquared ) { ++ maxDistPt = p; ++ maxLengthSquared = lengthSquared; ++ } ++ hasNoPoints = false; ++ } ++}; ++ ++std::pair calculateLocalBoundingVolume(QGeometryView *node) ++{ ++ // The Bounding volume will only be computed if the position Buffer ++ // isDirty ++ ++ if (!node->isEnabled()) ++ return {}; ++ ++ if (node->primitiveType() == QGeometryView::Patches) ++ return {}; ++ ++ QGeometry *geom = node->geometry(); ++ QGeometryPrivate *dgeom = QGeometryPrivate::get(geom); ++ ++ if (!geom) ++ return {}; ++ ++ int drawVertexCount = node->vertexCount(); // may be 0, gets changed below if so ++ ++ QAttribute *positionAttribute = dgeom->m_boundingVolumePositionAttribute; ++ const QVector attributes = geom->attributes(); ++ ++ // Use the default position attribute if attribute is null ++ if (!positionAttribute) { ++ for (QAttribute *attr : attributes) { ++ if (attr->name() == QAttribute::defaultPositionAttributeName()) { ++ positionAttribute = attr; ++ break; ++ } ++ } ++ } ++ ++ if (!positionAttribute ++ || positionAttribute->attributeType() != QAttribute::VertexAttribute ++ || positionAttribute->vertexBaseType() != QAttribute::Float ++ || positionAttribute->vertexSize() < 3) { ++ qWarning("calculateLocalBoundingVolume: Position attribute not suited for bounding volume computation"); ++ return {}; ++ } ++ ++ Qt3DCore::QBuffer *buf = positionAttribute->buffer(); ++ // No point in continuing if the positionAttribute doesn't have a suitable buffer ++ if (!buf) { ++ qWarning("calculateLocalBoundingVolume: Position attribute not referencing a valid buffer"); ++ return {}; ++ } ++ ++ // Check if there is an index attribute. ++ QAttribute *indexAttribute = nullptr; ++ Qt3DCore::QBuffer *indexBuf = nullptr; ++ ++ for (const auto attr : attributes) { ++ if (attr->attributeType() == QAttribute::IndexAttribute) { ++ indexBuf = attr->buffer(); ++ if (indexBuf) { ++ indexAttribute = attr; ++ ++ if (!drawVertexCount) ++ drawVertexCount = static_cast(indexAttribute->count()); ++ ++ static const QAttribute::VertexBaseType validIndexTypes[] = { ++ QAttribute::UnsignedShort, ++ QAttribute::UnsignedInt, ++ QAttribute::UnsignedByte ++ }; ++ ++ if (std::find(std::begin(validIndexTypes), ++ std::end(validIndexTypes), ++ indexAttribute->vertexBaseType()) == std::end(validIndexTypes)) { ++ qWarning() << "calculateLocalBoundingVolume: Unsupported index attribute type" << indexAttribute->name() << indexAttribute->vertexBaseType(); ++ return {}; ++ } ++ ++ break; ++ } ++ } ++ } ++ ++ if (!indexAttribute && !drawVertexCount) ++ drawVertexCount = static_cast(positionAttribute->count()); ++ ++ // Buf will be set to not dirty once it's loaded ++ // in a job executed after this one ++ // We need to recompute the bounding volume ++ // If anything in the GeometryRenderer has changed ++ BoundingVolumeCalculator reader; ++ if (reader.apply(positionAttribute, indexAttribute, drawVertexCount, ++ node->primitiveRestartEnabled(), node->restartIndexValue())) ++ return {reader.min(), reader.max()}; ++ ++ return {}; ++} ++ ++} ++ ++ ++bool BoundingVolumeCalculator::apply(QAttribute *positionAttribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++{ ++ m_radius = -1.f; ++ ++ FindExtremePoints findExtremePoints; ++ if (!findExtremePoints.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) { ++ return false; ++ } ++ ++ m_min = QVector3D(findExtremePoints.xMin, findExtremePoints.yMin, findExtremePoints.zMin); ++ m_max = QVector3D(findExtremePoints.xMax, findExtremePoints.yMax, findExtremePoints.zMax); ++ ++ FindMaxDistantPoint maxDistantPointY; ++ maxDistantPointY.setReferencePoint = true; ++ if (!maxDistantPointY.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) { ++ return false; ++ } ++ if (maxDistantPointY.hasNoPoints) ++ return false; ++ ++ //const Vector3D x = maxDistantPointY.referencePt; ++ const Vector3D y = maxDistantPointY.maxDistPt; ++ ++ FindMaxDistantPoint maxDistantPointZ; ++ maxDistantPointZ.setReferencePoint = false; ++ maxDistantPointZ.referencePt = y; ++ if (!maxDistantPointZ.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) ++ return false; ++ const Vector3D z = maxDistantPointZ.maxDistPt; ++ const Vector3D center = (y + z) * .5f; ++ ++ FindMaxDistantPoint maxDistantPointCenter; ++ maxDistantPointCenter.setReferencePoint = false; ++ maxDistantPointCenter.referencePt = center; ++ if (!maxDistantPointCenter.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) ++ return false; ++ ++ const float radius = (center - maxDistantPointCenter.maxDistPt).length(); ++ ++ if (center == Vector3D{} || radius < 0.f) ++ return false; ++ ++ m_radius = radius; ++ m_center = QVector3D{ center.x(), center.y(), center.z() }; ++ ++ return true; ++} ++ ++ + QGeometryViewPrivate::QGeometryViewPrivate() + : QNodePrivate() + , m_instanceCount(1) +@@ -65,6 +304,11 @@ QGeometryViewPrivate::~QGeometryViewPrivate() + { + } + ++QGeometryViewPrivate *QGeometryViewPrivate::get(QGeometryView *q) ++{ ++ return q->d_func(); ++} ++ + void QGeometryViewPrivate::update() + { + if (!m_blockNotifications) +diff --git a/src/core/geometry/qgeometryview_p.h b/src/core/geometry/qgeometryview_p.h +index f806c4d..05dea1d 100644 (file) +--- a/src/core/geometry/qgeometryview_p.h ++++ b/src/core/geometry/qgeometryview_p.h +@@ -55,6 +55,8 @@ + #include + #include + #include ++ ++#include + #include + + QT_BEGIN_NAMESPACE +@@ -67,6 +69,8 @@ public: + QGeometryViewPrivate(); + ~QGeometryViewPrivate(); + ++ static QGeometryViewPrivate *get(QGeometryView *q); ++ + void update() override; + + Q_DECLARE_PUBLIC(QGeometryView) +@@ -85,6 +89,30 @@ public: + bool m_dirty; + }; + ++class BoundingVolumeCalculator ++{ ++public: ++ BoundingVolumeCalculator() = default; ++ ++ const QVector3D min() const { return m_min; } ++ const QVector3D max() const { return m_max; } ++ const QVector3D center() const { return m_center; } ++ float radius() const { return m_radius; } ++ bool isValid() const { return m_radius >= 0.f; } ++ ++ bool apply(QAttribute *positionAttribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex); ++ ++private: ++ QVector3D m_min; ++ QVector3D m_max; ++ QVector3D m_center; ++ float m_radius = -1.f; ++}; ++ + } // namespace Qt3DCore + + QT_END_NAMESPACE +diff --git a/src/core/jobs/calcboundingvolumejob.cpp b/src/core/jobs/calcboundingvolumejob.cpp +new file mode 100644 (file) +index 0000000..37ee92e +--- /dev/null ++++ b/src/core/jobs/calcboundingvolumejob.cpp +@@ -0,0 +1,317 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "calcboundingvolumejob_p.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#if QT_CONFIG(concurrent) ++#include ++#endif ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++namespace { ++ ++BoundingVolumeComputeData findBoundingVolumeComputeData(QGeometryView *node) ++{ ++ if (!node->isEnabled()) ++ return {}; ++ ++ if (node->primitiveType() == QGeometryView::Patches) ++ return {}; ++ ++ QGeometry *geom = node->geometry(); ++ QGeometryPrivate *dgeom = QGeometryPrivate::get(geom); ++ if (!geom) ++ return {}; ++ ++ int drawVertexCount = node->vertexCount(); // may be 0, gets changed below if so ++ ++ QAttribute *positionAttribute = dgeom->m_boundingVolumePositionAttribute; ++ const QVector attributes = geom->attributes(); ++ ++ // Use the default position attribute if attribute is null ++ if (!positionAttribute) { ++ for (QAttribute *attr : attributes) { ++ if (attr->name() == QAttribute::defaultPositionAttributeName()) { ++ positionAttribute = attr; ++ break; ++ } ++ } ++ } ++ ++ if (!positionAttribute ++ || positionAttribute->attributeType() != QAttribute::VertexAttribute ++ || positionAttribute->vertexBaseType() != QAttribute::Float ++ || positionAttribute->vertexSize() < 3) { ++ qWarning("findBoundingVolumeComputeData: Position attribute not suited for bounding volume computation"); ++ return {}; ++ } ++ ++ Qt3DCore::QBuffer *positionBuffer = positionAttribute->buffer(); ++ // No point in continuing if the positionAttribute doesn't have a suitable buffer ++ if (!positionBuffer) { ++ qWarning("findBoundingVolumeComputeData: Position attribute not referencing a valid buffer"); ++ return {}; ++ } ++ ++ // Check if there is an index attribute. ++ QAttribute *indexAttribute = nullptr; ++ Qt3DCore::QBuffer *indexBuffer = nullptr; ++ ++ for (const auto attr : attributes) { ++ if (attr->attributeType() == QAttribute::IndexAttribute) { ++ indexBuffer = attr->buffer(); ++ if (indexBuffer) { ++ indexAttribute = attr; ++ ++ if (!drawVertexCount) ++ drawVertexCount = static_cast(indexAttribute->count()); ++ ++ static const QAttribute::VertexBaseType validIndexTypes[] = { ++ QAttribute::UnsignedShort, ++ QAttribute::UnsignedInt, ++ QAttribute::UnsignedByte ++ }; ++ ++ if (std::find(std::begin(validIndexTypes), ++ std::end(validIndexTypes), ++ indexAttribute->vertexBaseType()) == std::end(validIndexTypes)) { ++ qWarning() << "findBoundingVolumeComputeData: Unsupported index attribute type" << indexAttribute->name() << indexAttribute->vertexBaseType(); ++ return {}; ++ } ++ ++ break; ++ } ++ } ++ } ++ ++ if (!indexAttribute && !drawVertexCount) ++ drawVertexCount = static_cast(positionAttribute->count()); ++ ++ return { nullptr, nullptr, positionAttribute, indexAttribute, drawVertexCount }; ++} ++ ++BoundingVolumeComputeResult calculateLocalBoundingVolume(const BoundingVolumeComputeData &data) { ++ BoundingVolumeCalculator calculator; ++ if (calculator.apply(data.positionAttribute, data.indexAttribute, data.vertexCount, ++ data.provider->view()->primitiveRestartEnabled(), ++ data.provider->view()->restartIndexValue())) ++ return { ++ data.entity, data.provider, data.positionAttribute, data.indexAttribute, ++ calculator.min(), calculator.max(), ++ calculator.center(), calculator.radius() ++ }; ++ return {}; ++} ++ ++bool isTreeEnabled(QEntity *entity) { ++ if (!entity->isEnabled()) ++ return false; ++ ++ QEntity *parent = entity->parentEntity(); ++ while (parent) { ++ if (!parent->isEnabled()) ++ return false; ++ parent = parent->parentEntity(); ++ } ++ ++ return true; ++} ++ ++struct UpdateBoundFunctor ++{ ++ // This define is required to work with QtConcurrent ++ typedef QVector result_type; ++ result_type operator ()(const BoundingVolumeComputeData &data) ++ { ++ return { calculateLocalBoundingVolume(data) }; ++ } ++}; ++ ++struct ReduceUpdateBoundFunctor ++{ ++ void operator ()(QVector &result, const QVector &values) ++ { ++ result += values; ++ } ++}; ++ ++} // anonymous ++ ++//class CalculateBoundingVolumeJobPrivate : public Qt3DCore::QAspectJobPrivate ++//{ ++//public: ++// CalculateBoundingVolumeJobPrivate() { } ++// ~CalculateBoundingVolumeJobPrivate() override { } ++ ++// void postFrame(Qt3DCore::QAspectManager *manager) override ++// { ++// Q_UNUSED(manager) ++//// for (Geometry *backend : qAsConst(m_updatedGeometries)) { ++//// Qt3DCore::QGeometry *node = qobject_cast(manager->lookupNode(backend->peerId())); ++//// if (!node) ++//// continue; ++//// Qt3DCore::QGeometryPrivate *dNode = static_cast(Qt3DCore::QNodePrivate::get(node)); ++//// dNode->setExtent(backend->min(), backend->max()); ++//// } ++// } ++ ++//}; ++ ++CalculateBoundingVolumeJob::CalculateBoundingVolumeJob() ++ : Qt3DCore::QAspectJob() ++ , m_root(nullptr) ++{ ++ SET_JOB_RUN_STAT_TYPE(this, JobTypes::CalcBoundingVolume, 0) ++} ++ ++void CalculateBoundingVolumeJob::run() ++{ ++ m_results.clear(); ++ ++ QHash dirtyEntities; ++ QNodeVisitor visitor; ++ visitor.traverse(m_root, [](QNode *) {}, [&dirtyEntities](QEntity *entity) { ++ if (!isTreeEnabled(entity)) ++ return; ++ ++ const auto bvProviders = entity->componentsOfType(); ++ if (bvProviders.isEmpty()) ++ return; ++ ++ // we go through the list until be find a dirty provider, ++ // or THE primary provider ++ bool foundBV = false; ++ for (auto bv: bvProviders) { ++ if (!bv->view()) ++ continue; ++ auto dbv = QBoundingVolumePrivate::get(bv); ++ if (foundBV && !dbv->m_primaryProvider) ++ continue; ++ ++ auto bvdata = findBoundingVolumeComputeData(bv->view()); ++ if (!bvdata.valid()) ++ continue; ++ bvdata.entity = entity; ++ bvdata.provider = bv; ++ ++ bool dirty = QEntityPrivate::get(entity)->m_dirty; ++ dirty |= QGeometryViewPrivate::get(bv->view())->m_dirty; ++ dirty |= QGeometryPrivate::get(bv->view()->geometry())->m_dirty; ++ dirty |= QAttributePrivate::get(bvdata.positionAttribute)->m_dirty; ++ dirty |= QBufferPrivate::get(bvdata.positionAttribute->buffer())->m_dirty; ++ if (bvdata.indexAttribute) { ++ dirty |= QAttributePrivate::get(bvdata.indexAttribute)->m_dirty; ++ dirty |= QBufferPrivate::get(bvdata.indexAttribute->buffer())->m_dirty; ++ } ++ ++ if (dbv->m_primaryProvider) { ++ if (dirty) ++ dirtyEntities[entity] = bvdata; ++ break; ++ } else if (dirty) { ++ dirtyEntities[entity] = bvdata; ++ foundBV = true; ++ } ++ } ++ }); ++ ++#if QT_CONFIG(concurrent) ++ if (dirtyEntities.size() > 1) { ++ UpdateBoundFunctor functor; ++ ReduceUpdateBoundFunctor reduceFunctor; ++ m_results = QtConcurrent::blockingMappedReduced(dirtyEntities, functor, reduceFunctor); ++ } else ++#endif ++ { ++ for (auto it = dirtyEntities.begin(); it != dirtyEntities.end(); ++it) { ++ auto res = calculateLocalBoundingVolume(it.value()); ++ if (res.valid()) ++ m_results.push_back(res); // How do we push it to the backends???? ++ } ++ } ++ ++ for (auto result: qAsConst(m_results)) { ++ // set the results ++ QBoundingVolumePrivate::get(result.provider)->setImplicitBounds(result.m_min, result.m_max, result.m_center, result.m_radius); ++ } ++} ++ ++void CalculateBoundingVolumeJob::postFrame(QAspectEngine *aspectEngine) ++{ ++ Q_UNUSED(aspectEngine) ++ ++ for (auto result: qAsConst(m_results)) { ++ // reset dirty flags ++ QEntityPrivate::get(result.entity)->m_dirty = false; ++ QGeometryViewPrivate::get(result.provider->view())->m_dirty = false; ++ QGeometryPrivate::get(result.provider->view()->geometry())->m_dirty = false; ++ QAttributePrivate::get(result.positionAttribute)->m_dirty = false; ++ QBufferPrivate::get(result.positionAttribute->buffer())->m_dirty = false; ++ if (result.indexAttribute) { ++ QAttributePrivate::get(result.indexAttribute)->m_dirty = false; ++ QBufferPrivate::get(result.indexAttribute->buffer())->m_dirty = false; ++ } ++ } ++ ++ m_results.clear(); ++} ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ +diff --git a/src/core/jobs/calcboundingvolumejob_p.h b/src/core/jobs/calcboundingvolumejob_p.h +new file mode 100644 (file) +index 0000000..498fe76 +--- /dev/null ++++ b/src/core/jobs/calcboundingvolumejob_p.h +@@ -0,0 +1,113 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_CALCBOUNDINGVOLUMEJOB_H ++#define QT3DCORE_CALCBOUNDINGVOLUMEJOB_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++ ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++class CalculateBoundingVolumeJobPrivate; ++class QEntity; ++class QAttribute; ++class QBoundingVolume; ++ ++struct BoundingVolumeComputeData { ++ QEntity *entity = nullptr; ++ QBoundingVolume *provider = nullptr; ++ QAttribute *positionAttribute = nullptr; ++ QAttribute *indexAttribute = nullptr; ++ int vertexCount = 0; ++ ++ bool valid() const { return positionAttribute != nullptr; } ++}; ++ ++struct BoundingVolumeComputeResult { ++ QEntity *entity = nullptr; ++ QBoundingVolume *provider = nullptr; ++ QAttribute *positionAttribute = nullptr; ++ QAttribute *indexAttribute = nullptr; ++ QVector3D m_min; ++ QVector3D m_max; ++ QVector3D m_center; ++ float m_radius = -1.f; ++ ++ bool valid() const { return m_radius >= 0.f; } ++}; ++ ++class Q_3DCORE_PRIVATE_EXPORT CalculateBoundingVolumeJob : public Qt3DCore::QAspectJob ++{ ++public: ++ explicit CalculateBoundingVolumeJob(); ++ ++ void setRoot(QEntity *root) { m_root = root; } ++ void run() override; ++ void postFrame(QAspectEngine *aspectEngine) override; ++ ++private: ++ Q_DECLARE_PRIVATE(CalculateBoundingVolumeJob) ++ QEntity *m_root; ++ QVector m_results; ++}; ++ ++typedef QSharedPointer CalculateBoundingVolumeJobPtr; ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++#endif // QT3DCORE_CALCBOUNDINGVOLUMEJOB_H +diff --git a/src/core/jobs/job_common_p.h b/src/core/jobs/job_common_p.h +new file mode 100644 (file) +index 0000000..6cbf178 +--- /dev/null ++++ b/src/core/jobs/job_common_p.h +@@ -0,0 +1,73 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_JOB_COMMON_P_H ++#define QT3DCORE_JOB_COMMON_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++namespace JobTypes { ++ ++ enum JobType { ++ LoadBuffer = 4096, ++ CalcBoundingVolume, ++ }; ++ ++} // JobTypes ++ ++} // Qt3DCore ++ ++QT_END_NAMESPACE ++ ++#endif // QT3DCORE_JOB_COMMON_P_H +diff --git a/src/core/jobs/jobs.pri b/src/core/jobs/jobs.pri +index 5d262f5..a045339 100644 (file) +--- a/src/core/jobs/jobs.pri ++++ b/src/core/jobs/jobs.pri +@@ -4,7 +4,8 @@ SOURCES += \ + $$PWD/qaspectjobmanager.cpp \ + $$PWD/qabstractaspectjobmanager.cpp \ + $$PWD/qthreadpooler.cpp \ +- $$PWD/task.cpp ++ $$PWD/task.cpp \ ++ $$PWD/calcboundingvolumejob.cpp + + HEADERS += \ + $$PWD/qaspectjob.h \ +@@ -13,7 +14,9 @@ HEADERS += \ + $$PWD/qaspectjobmanager_p.h \ + $$PWD/qabstractaspectjobmanager_p.h \ + $$PWD/task_p.h \ +- $$PWD/qthreadpooler_p.h ++ $$PWD/qthreadpooler_p.h \ ++ $$PWD/calcboundingvolumejob_p.h \ ++ $$PWD/job_common_p.h + + INCLUDEPATH += $$PWD diff --git a/desktop/toolkit/qt6/qt6-quick3d/pspec.xml b/desktop/toolkit/qt6/qt6-quick3d/pspec.xml new file mode 100755 index 0000000000..60e8215369 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quick3d/pspec.xml @@ -0,0 +1,76 @@ + + + + + qt6-quick3d + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop + Experimental module providing APIs and a host tool to host tool to perform graphics and compute shader conditioning for the upcoming Qt graphics abstraction layer + Experimental module providing APIs and a host tool to host tool to perform graphics and compute shader conditioning for the upcoming Qt graphics abstraction layer + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtquick3d-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + qt6-declarative-devel + qt6-shadertools-devel + assimp-devel + + + qtquick3d-fix-build-with-gcc11.patch + + + + qt6-quick3d + Experimental module providing APIs and a host tool to host tool to perform graphics and compute shader conditioning for the upcoming Qt graphics abstraction layer + + qt6-base + qt6-shadertools + qt6-declarative + libgcc + assimp + + + /usr/bin + /usr/lib/qt6/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + + + + + qt6-quick3d-devel + Development files for qt6-quick3d + + qt6-base-devel + qt6-declarative-devel + qt6-quick3d + qt6-shadertools-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-quick3dphysics/actions.py b/desktop/toolkit/qt6/qt6-quick3dphysics/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quick3dphysics/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-quick3dphysics/pspec.xml b/desktop/toolkit/qt6/qt6-quick3dphysics/pspec.xml new file mode 100644 index 0000000000..b3c110b9ac --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quick3dphysics/pspec.xml @@ -0,0 +1,105 @@ + + + + + qt6-quick3dphysics + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + Physics engine integration for Qt Quick 3D + qt6-quick3dphysics + Physics engine integration for Qt Quick 3D + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtquick3dphysics-everywhere-src-6.4.0.tar.xz + + + + + + qt6-quick3dphysics + + + / + + + + + + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-quick3dphysics/translations.xml b/desktop/toolkit/qt6/qt6-quick3dphysics/translations.xml new file mode 100644 index 0000000000..8e58e31b97 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quick3dphysics/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-quick3dphysics + Physics engine integration for Qt Quick 3D + Physics engine integration for Qt Quick 3D + + diff --git a/desktop/toolkit/qt6/qt6-quicktimeline/actions.py b/desktop/toolkit/qt6/qt6-quicktimeline/actions.py new file mode 100755 index 0000000000..b486d40837 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quicktimeline/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-quicktimeline/files/x.patch b/desktop/toolkit/qt6/qt6-quicktimeline/files/x.patch new file mode 100644 index 0000000000..7c13e58d6a --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quicktimeline/files/x.patch @@ -0,0 +1,1480 @@ +If an entity uses a QBoundingVolume and a QGeometryView, compute +the bounding volume data in the core aspect. All other cases will +still happen in the render aspect. + +Result not currently used (ie it's done again in render aspect). + +Change-Id: I4b5ed21bac42b79777c3112aa76d876ac5b6f52d +Reviewed-by: Paul Lemire +14 files changed: +src/core/aspect/qcoreaspect.cpp patch | blob | history +src/core/aspect/qcoreaspect.h patch | blob | history +src/core/aspect/qcoreaspect_p.h patch | blob | history +src/core/core.pro patch | blob | history +src/core/geometry/bufferutils_p.h [new file with mode: 0644] patch | blob +src/core/geometry/buffervisitor_p.h [new file with mode: 0644] patch | blob +src/core/geometry/geometry.pri patch | blob | history +src/core/geometry/qgeometry_p.h patch | blob | history +src/core/geometry/qgeometryview.cpp patch | blob | history +src/core/geometry/qgeometryview_p.h patch | blob | history +src/core/jobs/calcboundingvolumejob.cpp [new file with mode: 0644] patch | blob +src/core/jobs/calcboundingvolumejob_p.h [new file with mode: 0644] patch | blob +src/core/jobs/job_common_p.h [new file with mode: 0644] patch | blob +src/core/jobs/jobs.pri patch | blob | history + +diff --git a/src/core/aspect/qcoreaspect.cpp b/src/core/aspect/qcoreaspect.cpp +index 48f9aaf..dc3566e 100644 (file) +--- a/src/core/aspect/qcoreaspect.cpp ++++ b/src/core/aspect/qcoreaspect.cpp +@@ -39,12 +39,16 @@ + + #include "qcoreaspect.h" + #include "qcoreaspect_p.h" ++#include ++#include ++#include + + QT_BEGIN_NAMESPACE + + using namespace Qt3DCore; + + QCoreAspectPrivate::QCoreAspectPrivate() ++ : Qt3DCore::QAbstractAspectPrivate() + { + + } +@@ -65,7 +69,7 @@ void QCoreAspectPrivate::frameDone() + } + + QCoreAspect::QCoreAspect(QObject *parent) +- : Qt3DCore::QAbstractAspect(parent) ++ : Qt3DCore::QAbstractAspect(*new QCoreAspectPrivate, parent) + { + + } +@@ -75,10 +79,28 @@ QCoreAspect::~QCoreAspect() + + } + ++QAspectJobPtr QCoreAspect::calculateBoundingVolumeJob() const ++{ ++ Q_D(const QCoreAspect); ++ return d->m_calculateBoundingVolumeJob; ++} ++ + QVector QCoreAspect::jobsToExecute(qint64 time) + { ++ Q_D(QCoreAspect); + Q_UNUSED(time) +- return {}; ++ ++ QVector jobs; ++ ++ auto scene = d->m_aspectManager->scene(); ++ auto dirtyBits = scene->dirtyBits(); ++ ++ if (dirtyBits & QScene::GeometryDirty || ++ dirtyBits & QScene::BuffersDirty) { ++ jobs.push_back(d->m_calculateBoundingVolumeJob); ++ } ++ ++ return jobs; + } + + QVariant QCoreAspect::executeCommand(const QStringList &args) +@@ -89,12 +111,25 @@ QVariant QCoreAspect::executeCommand(const QStringList &args) + + void QCoreAspect::onRegistered() + { ++ Q_D(QCoreAspect); + ++ if (d->m_calculateBoundingVolumeJob.isNull()) ++ d->m_calculateBoundingVolumeJob = CalculateBoundingVolumeJobPtr::create(); + } + +-void QCoreAspect::onUnregistered() ++void QCoreAspect::onEngineStartup() + { ++ Q_D(QCoreAspect); + ++ Q_ASSERT(d->m_calculateBoundingVolumeJob); ++ d->m_calculateBoundingVolumeJob->setRoot(d->m_root); ++} ++ ++void QCoreAspect::frameDone() ++{ ++ Q_D(QCoreAspect); ++ auto scene = d->m_aspectManager->scene(); ++ scene->clearDirtyBits(); + } + + QT_END_NAMESPACE +diff --git a/src/core/aspect/qcoreaspect.h b/src/core/aspect/qcoreaspect.h +index 27c72f4..071b738 100644 (file) +--- a/src/core/aspect/qcoreaspect.h ++++ b/src/core/aspect/qcoreaspect.h +@@ -55,6 +55,8 @@ public: + explicit QCoreAspect(QObject *parent = nullptr); + ~QCoreAspect(); + ++ QAspectJobPtr calculateBoundingVolumeJob() const; ++ + protected: + Q_DECLARE_PRIVATE(QCoreAspect) + +@@ -62,7 +64,8 @@ private: + QVector jobsToExecute(qint64 time) override; + QVariant executeCommand(const QStringList &args) override; + void onRegistered() override; +- void onUnregistered() override; ++ void onEngineStartup() override; ++ void frameDone() override; + }; + + } +diff --git a/src/core/aspect/qcoreaspect_p.h b/src/core/aspect/qcoreaspect_p.h +index ca665fa..cda0a14 100644 (file) +--- a/src/core/aspect/qcoreaspect_p.h ++++ b/src/core/aspect/qcoreaspect_p.h +@@ -55,10 +55,15 @@ + #include + #include + ++#include ++ + QT_BEGIN_NAMESPACE + + namespace Qt3DCore { + ++class CalculateBoundingVolumeJob; ++using CalculateBoundingVolumeJobPtr = QSharedPointer; ++ + class Q_3DCORE_PRIVATE_EXPORT QCoreAspectPrivate : public Qt3DCore::QAbstractAspectPrivate + { + public: +@@ -71,6 +76,7 @@ public: + void frameDone() override; + + bool m_initialized; ++ CalculateBoundingVolumeJobPtr m_calculateBoundingVolumeJob; + }; + + } +diff --git a/src/core/core.pro b/src/core/core.pro +index b149497..846e9d8 100644 (file) +--- a/src/core/core.pro ++++ b/src/core/core.pro +@@ -1,7 +1,8 @@ +-TARGET = Qt3DCore +-MODULE = 3dcore ++TARGET = Qt3DCore ++MODULE = 3dcore + +-QT = core-private gui-private network ++QT = core-private gui-private network ++QT_FOR_PRIVATE = concurrent + + gcov { + QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage +diff --git a/src/core/geometry/bufferutils_p.h b/src/core/geometry/bufferutils_p.h +new file mode 100644 (file) +index 0000000..1b83d99 +--- /dev/null ++++ b/src/core/geometry/bufferutils_p.h +@@ -0,0 +1,113 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2015 Paul Lemire paul.lemire350@gmail.com ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_BUFFERUTILS_P_H ++#define QT3DCORE_BUFFERUTILS_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of other Qt classes. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++ ++namespace Qt3DCore { ++ ++class QGeometryView; ++class QBuffer; ++ ++struct BufferInfo ++{ ++ BufferInfo() ++ : type(Qt3DCore::QAttribute::VertexBaseType::Float) ++ , dataSize(0) ++ , count(0) ++ , byteStride(0) ++ , byteOffset(0) ++ , restartEnabled(false) ++ , restartIndexValue(-1) ++ {} ++ ++ QByteArray data; ++ Qt3DCore::QAttribute::VertexBaseType type; ++ uint dataSize; ++ uint count; ++ uint byteStride; ++ uint byteOffset; ++ bool restartEnabled; ++ int restartIndexValue; ++}; ++ ++ ++namespace BufferTypeInfo { ++ ++ template struct EnumToType; ++ template <> struct EnumToType { typedef const char type; }; ++ template <> struct EnumToType { typedef const uchar type; }; ++ template <> struct EnumToType { typedef const short type; }; ++ template <> struct EnumToType { typedef const ushort type; }; ++ template <> struct EnumToType { typedef const int type; }; ++ template <> struct EnumToType { typedef const uint type; }; ++ template <> struct EnumToType { typedef const float type; }; ++ template <> struct EnumToType { typedef const double type; }; ++ ++ template ++ typename EnumToType::type *castToType(const QByteArray &u, uint byteOffset) ++ { ++ return reinterpret_cast< typename EnumToType::type *>(u.constData() + byteOffset); ++ } ++ ++} // namespace BufferTypeInfo ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++ ++#endif // QT3DCORE_BUFFERUTILS_P_H +diff --git a/src/core/geometry/buffervisitor_p.h b/src/core/geometry/buffervisitor_p.h +new file mode 100644 (file) +index 0000000..69cfb9b +--- /dev/null ++++ b/src/core/geometry/buffervisitor_p.h +@@ -0,0 +1,285 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_BUFFERVISITOR_P_H ++#define QT3DCORE_BUFFERVISITOR_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists for the convenience ++// of other Qt classes. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++class QEntity; ++ ++template ++class Q_AUTOTEST_EXPORT BufferVisitor ++{ ++public: ++ explicit BufferVisitor() = default; ++ virtual ~BufferVisitor() = default; ++ ++ virtual void visit(uint ndx, ValueType x) { ++ Q_UNUSED(ndx) Q_UNUSED(x) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y, ValueType z) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) Q_UNUSED(z) ++ } ++ virtual void visit(uint ndx, ValueType x, ValueType y, ValueType z, ValueType w) { ++ Q_UNUSED(ndx) Q_UNUSED(x) Q_UNUSED(y) Q_UNUSED(z) Q_UNUSED(w) ++ } ++ ++ bool apply(QAttribute *attribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ if (attribute->vertexBaseType() != VertexBaseType) ++ return false; ++ if (attribute->vertexSize() < dataSize) ++ return false; ++ ++ auto data = attribute->buffer()->data(); ++ auto vertexBuffer = BufferTypeInfo::castToType(data, attribute->byteOffset()); ++ ++ if (indexAttribute) { ++ auto indexData = indexAttribute->buffer()->data(); ++ switch (indexAttribute->vertexBaseType()) { ++ case Qt3DCore::QAttribute::UnsignedShort: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ case Qt3DCore::QAttribute::UnsignedInt: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ case Qt3DCore::QAttribute::UnsignedByte: { ++ auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute->byteOffset()); ++ traverseCoordinateIndexed(vertexBuffer, indexBuffer, attribute->byteStride(), drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ } ++ default: Q_UNREACHABLE(); ++ } ++ } else { ++ switch (dataSize) { ++ case 1: traverseCoordinates1(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 2: traverseCoordinates2(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 3: traverseCoordinates3(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ case 4: traverseCoordinates4(vertexBuffer, attribute->byteStride(), drawVertexCount); break; ++ default: Q_UNREACHABLE(); ++ } ++ } ++ ++ return true; ++ } ++ ++protected: ++ template ++ void traverseCoordinateIndexed(VertexBufferType *vertexBuffer, ++ IndexBufferType *indexBuffer, ++ int vertexByteStride, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ switch (dataSize) { ++ case 1: traverseCoordinates1Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 2: traverseCoordinates2Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 3: traverseCoordinates3Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ case 4: traverseCoordinates4Indexed(vertexBuffer, vertexByteStride, indexBuffer, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex); ++ break; ++ default: Q_UNREACHABLE(); ++ } ++ } ++ ++ template ++ void traverseCoordinates1(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride / sizeof(Coordinate); ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates1Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride / sizeof(Coordinate); ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates2(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 2; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1]); ++ coordinates += stride; ++ } ++ } ++ ++ ++ template ++ void traverseCoordinates2Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 2; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates3(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 3; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1], coordinates[2]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates3Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 3; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1], coordinates[n + 2]); ++ } ++ } ++ } ++ ++ template ++ void traverseCoordinates4(Coordinate *coordinates, ++ const uint byteStride, ++ const uint count) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 4; ++ for (uint ndx = 0; ndx < count; ++ndx) { ++ visit(ndx, coordinates[0], coordinates[1], coordinates[2], coordinates[3]); ++ coordinates += stride; ++ } ++ } ++ ++ template ++ void traverseCoordinates4Indexed(Coordinate *coordinates, ++ const uint byteStride, ++ IndexElem *indices, ++ const uint count, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++ { ++ const uint stride = byteStride ? byteStride / sizeof(Coordinate) : 4; ++ for (uint i = 0; i < count; ++i) { ++ if (!primitiveRestartEnabled || static_cast(indices[i]) != primitiveRestartIndex) { ++ const uint n = stride * indices[i]; ++ visit(i, coordinates[n], coordinates[n + 1], coordinates[n + 2], coordinates[n + 3]); ++ } ++ } ++ } ++}; ++ ++typedef BufferVisitor Buffer3fVisitor; ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++ ++#endif // QT3DCORE_BUFFERVISITOR_P_H +diff --git a/src/core/geometry/geometry.pri b/src/core/geometry/geometry.pri +index eadf7ca..70bda07 100644 (file) +--- a/src/core/geometry/geometry.pri ++++ b/src/core/geometry/geometry.pri +@@ -12,7 +12,9 @@ HEADERS += \ + $$PWD/qgeometry.h \ + $$PWD/qgeometryfactory_p.h \ + $$PWD/qgeometryview_p.h \ +- $$PWD/qgeometryview.h ++ $$PWD/qgeometryview.h \ ++ $$PWD/bufferutils_p.h \ ++ $$PWD/buffervisitor_p.h + + SOURCES += \ + $$PWD/qabstractfunctor.cpp \ +diff --git a/src/core/geometry/qgeometry_p.h b/src/core/geometry/qgeometry_p.h +index 2a05b5b..ed13b3f 100644 (file) +--- a/src/core/geometry/qgeometry_p.h ++++ b/src/core/geometry/qgeometry_p.h +@@ -72,7 +72,6 @@ public: + void setScene(QScene *scene) override; + void update() override; + void setExtent(const QVector3D &minExtent, const QVector3D &maxExtent); +- + static QGeometryPrivate *get(QGeometry *q); + + QVector m_attributes; +diff --git a/src/core/geometry/qgeometryview.cpp b/src/core/geometry/qgeometryview.cpp +index 65e30d9..258448b 100644 (file) +--- a/src/core/geometry/qgeometryview.cpp ++++ b/src/core/geometry/qgeometryview.cpp +@@ -39,11 +39,250 @@ + + #include "qgeometryview.h" + #include "qgeometryview_p.h" ++#include "qgeometry_p.h" ++#include "buffervisitor_p.h" ++ ++#include ++#include ++#include + + QT_BEGIN_NAMESPACE + + using namespace Qt3DCore; + ++namespace { ++ ++class FindExtremePoints : public Buffer3fVisitor ++{ ++public: ++ FindExtremePoints() ++ : Buffer3fVisitor() ++ , xMin(0.0f), xMax(0.0f), yMin(0.0f), yMax(0.0f), zMin(0.0f), zMax(0.0f) ++ { } ++ ++ float xMin, xMax, yMin, yMax, zMin, zMax; ++ Vector3D xMinPt, xMaxPt, yMinPt, yMaxPt, zMinPt, zMaxPt; ++ ++ void visit(uint ndx, float x, float y, float z) override ++ { ++ if (ndx) { ++ if (x < xMin) { ++ xMin = x; ++ xMinPt = Vector3D(x, y, z); ++ } ++ if (x > xMax) { ++ xMax = x; ++ xMaxPt = Vector3D(x, y, z); ++ } ++ if (y < yMin) { ++ yMin = y; ++ yMinPt = Vector3D(x, y, z); ++ } ++ if (y > yMax) { ++ yMax = y; ++ yMaxPt = Vector3D(x, y, z); ++ } ++ if (z < zMin) { ++ zMin = z; ++ zMinPt = Vector3D(x, y, z); ++ } ++ if (z > zMax) { ++ zMax = z; ++ zMaxPt = Vector3D(x, y, z); ++ } ++ } else { ++ xMin = xMax = x; ++ yMin = yMax = y; ++ zMin = zMax = z; ++ xMinPt = xMaxPt = yMinPt = yMaxPt = zMinPt = zMaxPt = Vector3D(x, y, z); ++ } ++ } ++}; ++ ++class FindMaxDistantPoint : public Buffer3fVisitor ++{ ++public: ++ FindMaxDistantPoint() ++ : Buffer3fVisitor() ++ { } ++ ++ float maxLengthSquared = 0.0f; ++ bool setReferencePoint = false; ++ bool hasNoPoints = true; ++ Vector3D maxDistPt; ++ Vector3D referencePt; ++ ++ void visit(uint ndx, float x, float y, float z) override ++ { ++ Q_UNUSED(ndx) ++ const Vector3D p = Vector3D(x, y, z); ++ ++ if (hasNoPoints && setReferencePoint) { ++ maxLengthSquared = 0.0f; ++ referencePt = p; ++ } ++ const float lengthSquared = (p - referencePt).lengthSquared(); ++ if ( lengthSquared >= maxLengthSquared ) { ++ maxDistPt = p; ++ maxLengthSquared = lengthSquared; ++ } ++ hasNoPoints = false; ++ } ++}; ++ ++std::pair calculateLocalBoundingVolume(QGeometryView *node) ++{ ++ // The Bounding volume will only be computed if the position Buffer ++ // isDirty ++ ++ if (!node->isEnabled()) ++ return {}; ++ ++ if (node->primitiveType() == QGeometryView::Patches) ++ return {}; ++ ++ QGeometry *geom = node->geometry(); ++ QGeometryPrivate *dgeom = QGeometryPrivate::get(geom); ++ ++ if (!geom) ++ return {}; ++ ++ int drawVertexCount = node->vertexCount(); // may be 0, gets changed below if so ++ ++ QAttribute *positionAttribute = dgeom->m_boundingVolumePositionAttribute; ++ const QVector attributes = geom->attributes(); ++ ++ // Use the default position attribute if attribute is null ++ if (!positionAttribute) { ++ for (QAttribute *attr : attributes) { ++ if (attr->name() == QAttribute::defaultPositionAttributeName()) { ++ positionAttribute = attr; ++ break; ++ } ++ } ++ } ++ ++ if (!positionAttribute ++ || positionAttribute->attributeType() != QAttribute::VertexAttribute ++ || positionAttribute->vertexBaseType() != QAttribute::Float ++ || positionAttribute->vertexSize() < 3) { ++ qWarning("calculateLocalBoundingVolume: Position attribute not suited for bounding volume computation"); ++ return {}; ++ } ++ ++ Qt3DCore::QBuffer *buf = positionAttribute->buffer(); ++ // No point in continuing if the positionAttribute doesn't have a suitable buffer ++ if (!buf) { ++ qWarning("calculateLocalBoundingVolume: Position attribute not referencing a valid buffer"); ++ return {}; ++ } ++ ++ // Check if there is an index attribute. ++ QAttribute *indexAttribute = nullptr; ++ Qt3DCore::QBuffer *indexBuf = nullptr; ++ ++ for (const auto attr : attributes) { ++ if (attr->attributeType() == QAttribute::IndexAttribute) { ++ indexBuf = attr->buffer(); ++ if (indexBuf) { ++ indexAttribute = attr; ++ ++ if (!drawVertexCount) ++ drawVertexCount = static_cast(indexAttribute->count()); ++ ++ static const QAttribute::VertexBaseType validIndexTypes[] = { ++ QAttribute::UnsignedShort, ++ QAttribute::UnsignedInt, ++ QAttribute::UnsignedByte ++ }; ++ ++ if (std::find(std::begin(validIndexTypes), ++ std::end(validIndexTypes), ++ indexAttribute->vertexBaseType()) == std::end(validIndexTypes)) { ++ qWarning() << "calculateLocalBoundingVolume: Unsupported index attribute type" << indexAttribute->name() << indexAttribute->vertexBaseType(); ++ return {}; ++ } ++ ++ break; ++ } ++ } ++ } ++ ++ if (!indexAttribute && !drawVertexCount) ++ drawVertexCount = static_cast(positionAttribute->count()); ++ ++ // Buf will be set to not dirty once it's loaded ++ // in a job executed after this one ++ // We need to recompute the bounding volume ++ // If anything in the GeometryRenderer has changed ++ BoundingVolumeCalculator reader; ++ if (reader.apply(positionAttribute, indexAttribute, drawVertexCount, ++ node->primitiveRestartEnabled(), node->restartIndexValue())) ++ return {reader.min(), reader.max()}; ++ ++ return {}; ++} ++ ++} ++ ++ ++bool BoundingVolumeCalculator::apply(QAttribute *positionAttribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex) ++{ ++ m_radius = -1.f; ++ ++ FindExtremePoints findExtremePoints; ++ if (!findExtremePoints.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) { ++ return false; ++ } ++ ++ m_min = QVector3D(findExtremePoints.xMin, findExtremePoints.yMin, findExtremePoints.zMin); ++ m_max = QVector3D(findExtremePoints.xMax, findExtremePoints.yMax, findExtremePoints.zMax); ++ ++ FindMaxDistantPoint maxDistantPointY; ++ maxDistantPointY.setReferencePoint = true; ++ if (!maxDistantPointY.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) { ++ return false; ++ } ++ if (maxDistantPointY.hasNoPoints) ++ return false; ++ ++ //const Vector3D x = maxDistantPointY.referencePt; ++ const Vector3D y = maxDistantPointY.maxDistPt; ++ ++ FindMaxDistantPoint maxDistantPointZ; ++ maxDistantPointZ.setReferencePoint = false; ++ maxDistantPointZ.referencePt = y; ++ if (!maxDistantPointZ.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) ++ return false; ++ const Vector3D z = maxDistantPointZ.maxDistPt; ++ const Vector3D center = (y + z) * .5f; ++ ++ FindMaxDistantPoint maxDistantPointCenter; ++ maxDistantPointCenter.setReferencePoint = false; ++ maxDistantPointCenter.referencePt = center; ++ if (!maxDistantPointCenter.apply(positionAttribute, indexAttribute, drawVertexCount, ++ primitiveRestartEnabled, primitiveRestartIndex)) ++ return false; ++ ++ const float radius = (center - maxDistantPointCenter.maxDistPt).length(); ++ ++ if (center == Vector3D{} || radius < 0.f) ++ return false; ++ ++ m_radius = radius; ++ m_center = QVector3D{ center.x(), center.y(), center.z() }; ++ ++ return true; ++} ++ ++ + QGeometryViewPrivate::QGeometryViewPrivate() + : QNodePrivate() + , m_instanceCount(1) +@@ -65,6 +304,11 @@ QGeometryViewPrivate::~QGeometryViewPrivate() + { + } + ++QGeometryViewPrivate *QGeometryViewPrivate::get(QGeometryView *q) ++{ ++ return q->d_func(); ++} ++ + void QGeometryViewPrivate::update() + { + if (!m_blockNotifications) +diff --git a/src/core/geometry/qgeometryview_p.h b/src/core/geometry/qgeometryview_p.h +index f806c4d..05dea1d 100644 (file) +--- a/src/core/geometry/qgeometryview_p.h ++++ b/src/core/geometry/qgeometryview_p.h +@@ -55,6 +55,8 @@ + #include + #include + #include ++ ++#include + #include + + QT_BEGIN_NAMESPACE +@@ -67,6 +69,8 @@ public: + QGeometryViewPrivate(); + ~QGeometryViewPrivate(); + ++ static QGeometryViewPrivate *get(QGeometryView *q); ++ + void update() override; + + Q_DECLARE_PUBLIC(QGeometryView) +@@ -85,6 +89,30 @@ public: + bool m_dirty; + }; + ++class BoundingVolumeCalculator ++{ ++public: ++ BoundingVolumeCalculator() = default; ++ ++ const QVector3D min() const { return m_min; } ++ const QVector3D max() const { return m_max; } ++ const QVector3D center() const { return m_center; } ++ float radius() const { return m_radius; } ++ bool isValid() const { return m_radius >= 0.f; } ++ ++ bool apply(QAttribute *positionAttribute, ++ QAttribute *indexAttribute, ++ int drawVertexCount, ++ bool primitiveRestartEnabled, ++ int primitiveRestartIndex); ++ ++private: ++ QVector3D m_min; ++ QVector3D m_max; ++ QVector3D m_center; ++ float m_radius = -1.f; ++}; ++ + } // namespace Qt3DCore + + QT_END_NAMESPACE +diff --git a/src/core/jobs/calcboundingvolumejob.cpp b/src/core/jobs/calcboundingvolumejob.cpp +new file mode 100644 (file) +index 0000000..37ee92e +--- /dev/null ++++ b/src/core/jobs/calcboundingvolumejob.cpp +@@ -0,0 +1,317 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#include "calcboundingvolumejob_p.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#if QT_CONFIG(concurrent) ++#include ++#endif ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++namespace { ++ ++BoundingVolumeComputeData findBoundingVolumeComputeData(QGeometryView *node) ++{ ++ if (!node->isEnabled()) ++ return {}; ++ ++ if (node->primitiveType() == QGeometryView::Patches) ++ return {}; ++ ++ QGeometry *geom = node->geometry(); ++ QGeometryPrivate *dgeom = QGeometryPrivate::get(geom); ++ if (!geom) ++ return {}; ++ ++ int drawVertexCount = node->vertexCount(); // may be 0, gets changed below if so ++ ++ QAttribute *positionAttribute = dgeom->m_boundingVolumePositionAttribute; ++ const QVector attributes = geom->attributes(); ++ ++ // Use the default position attribute if attribute is null ++ if (!positionAttribute) { ++ for (QAttribute *attr : attributes) { ++ if (attr->name() == QAttribute::defaultPositionAttributeName()) { ++ positionAttribute = attr; ++ break; ++ } ++ } ++ } ++ ++ if (!positionAttribute ++ || positionAttribute->attributeType() != QAttribute::VertexAttribute ++ || positionAttribute->vertexBaseType() != QAttribute::Float ++ || positionAttribute->vertexSize() < 3) { ++ qWarning("findBoundingVolumeComputeData: Position attribute not suited for bounding volume computation"); ++ return {}; ++ } ++ ++ Qt3DCore::QBuffer *positionBuffer = positionAttribute->buffer(); ++ // No point in continuing if the positionAttribute doesn't have a suitable buffer ++ if (!positionBuffer) { ++ qWarning("findBoundingVolumeComputeData: Position attribute not referencing a valid buffer"); ++ return {}; ++ } ++ ++ // Check if there is an index attribute. ++ QAttribute *indexAttribute = nullptr; ++ Qt3DCore::QBuffer *indexBuffer = nullptr; ++ ++ for (const auto attr : attributes) { ++ if (attr->attributeType() == QAttribute::IndexAttribute) { ++ indexBuffer = attr->buffer(); ++ if (indexBuffer) { ++ indexAttribute = attr; ++ ++ if (!drawVertexCount) ++ drawVertexCount = static_cast(indexAttribute->count()); ++ ++ static const QAttribute::VertexBaseType validIndexTypes[] = { ++ QAttribute::UnsignedShort, ++ QAttribute::UnsignedInt, ++ QAttribute::UnsignedByte ++ }; ++ ++ if (std::find(std::begin(validIndexTypes), ++ std::end(validIndexTypes), ++ indexAttribute->vertexBaseType()) == std::end(validIndexTypes)) { ++ qWarning() << "findBoundingVolumeComputeData: Unsupported index attribute type" << indexAttribute->name() << indexAttribute->vertexBaseType(); ++ return {}; ++ } ++ ++ break; ++ } ++ } ++ } ++ ++ if (!indexAttribute && !drawVertexCount) ++ drawVertexCount = static_cast(positionAttribute->count()); ++ ++ return { nullptr, nullptr, positionAttribute, indexAttribute, drawVertexCount }; ++} ++ ++BoundingVolumeComputeResult calculateLocalBoundingVolume(const BoundingVolumeComputeData &data) { ++ BoundingVolumeCalculator calculator; ++ if (calculator.apply(data.positionAttribute, data.indexAttribute, data.vertexCount, ++ data.provider->view()->primitiveRestartEnabled(), ++ data.provider->view()->restartIndexValue())) ++ return { ++ data.entity, data.provider, data.positionAttribute, data.indexAttribute, ++ calculator.min(), calculator.max(), ++ calculator.center(), calculator.radius() ++ }; ++ return {}; ++} ++ ++bool isTreeEnabled(QEntity *entity) { ++ if (!entity->isEnabled()) ++ return false; ++ ++ QEntity *parent = entity->parentEntity(); ++ while (parent) { ++ if (!parent->isEnabled()) ++ return false; ++ parent = parent->parentEntity(); ++ } ++ ++ return true; ++} ++ ++struct UpdateBoundFunctor ++{ ++ // This define is required to work with QtConcurrent ++ typedef QVector result_type; ++ result_type operator ()(const BoundingVolumeComputeData &data) ++ { ++ return { calculateLocalBoundingVolume(data) }; ++ } ++}; ++ ++struct ReduceUpdateBoundFunctor ++{ ++ void operator ()(QVector &result, const QVector &values) ++ { ++ result += values; ++ } ++}; ++ ++} // anonymous ++ ++//class CalculateBoundingVolumeJobPrivate : public Qt3DCore::QAspectJobPrivate ++//{ ++//public: ++// CalculateBoundingVolumeJobPrivate() { } ++// ~CalculateBoundingVolumeJobPrivate() override { } ++ ++// void postFrame(Qt3DCore::QAspectManager *manager) override ++// { ++// Q_UNUSED(manager) ++//// for (Geometry *backend : qAsConst(m_updatedGeometries)) { ++//// Qt3DCore::QGeometry *node = qobject_cast(manager->lookupNode(backend->peerId())); ++//// if (!node) ++//// continue; ++//// Qt3DCore::QGeometryPrivate *dNode = static_cast(Qt3DCore::QNodePrivate::get(node)); ++//// dNode->setExtent(backend->min(), backend->max()); ++//// } ++// } ++ ++//}; ++ ++CalculateBoundingVolumeJob::CalculateBoundingVolumeJob() ++ : Qt3DCore::QAspectJob() ++ , m_root(nullptr) ++{ ++ SET_JOB_RUN_STAT_TYPE(this, JobTypes::CalcBoundingVolume, 0) ++} ++ ++void CalculateBoundingVolumeJob::run() ++{ ++ m_results.clear(); ++ ++ QHash dirtyEntities; ++ QNodeVisitor visitor; ++ visitor.traverse(m_root, [](QNode *) {}, [&dirtyEntities](QEntity *entity) { ++ if (!isTreeEnabled(entity)) ++ return; ++ ++ const auto bvProviders = entity->componentsOfType(); ++ if (bvProviders.isEmpty()) ++ return; ++ ++ // we go through the list until be find a dirty provider, ++ // or THE primary provider ++ bool foundBV = false; ++ for (auto bv: bvProviders) { ++ if (!bv->view()) ++ continue; ++ auto dbv = QBoundingVolumePrivate::get(bv); ++ if (foundBV && !dbv->m_primaryProvider) ++ continue; ++ ++ auto bvdata = findBoundingVolumeComputeData(bv->view()); ++ if (!bvdata.valid()) ++ continue; ++ bvdata.entity = entity; ++ bvdata.provider = bv; ++ ++ bool dirty = QEntityPrivate::get(entity)->m_dirty; ++ dirty |= QGeometryViewPrivate::get(bv->view())->m_dirty; ++ dirty |= QGeometryPrivate::get(bv->view()->geometry())->m_dirty; ++ dirty |= QAttributePrivate::get(bvdata.positionAttribute)->m_dirty; ++ dirty |= QBufferPrivate::get(bvdata.positionAttribute->buffer())->m_dirty; ++ if (bvdata.indexAttribute) { ++ dirty |= QAttributePrivate::get(bvdata.indexAttribute)->m_dirty; ++ dirty |= QBufferPrivate::get(bvdata.indexAttribute->buffer())->m_dirty; ++ } ++ ++ if (dbv->m_primaryProvider) { ++ if (dirty) ++ dirtyEntities[entity] = bvdata; ++ break; ++ } else if (dirty) { ++ dirtyEntities[entity] = bvdata; ++ foundBV = true; ++ } ++ } ++ }); ++ ++#if QT_CONFIG(concurrent) ++ if (dirtyEntities.size() > 1) { ++ UpdateBoundFunctor functor; ++ ReduceUpdateBoundFunctor reduceFunctor; ++ m_results = QtConcurrent::blockingMappedReduced(dirtyEntities, functor, reduceFunctor); ++ } else ++#endif ++ { ++ for (auto it = dirtyEntities.begin(); it != dirtyEntities.end(); ++it) { ++ auto res = calculateLocalBoundingVolume(it.value()); ++ if (res.valid()) ++ m_results.push_back(res); // How do we push it to the backends???? ++ } ++ } ++ ++ for (auto result: qAsConst(m_results)) { ++ // set the results ++ QBoundingVolumePrivate::get(result.provider)->setImplicitBounds(result.m_min, result.m_max, result.m_center, result.m_radius); ++ } ++} ++ ++void CalculateBoundingVolumeJob::postFrame(QAspectEngine *aspectEngine) ++{ ++ Q_UNUSED(aspectEngine) ++ ++ for (auto result: qAsConst(m_results)) { ++ // reset dirty flags ++ QEntityPrivate::get(result.entity)->m_dirty = false; ++ QGeometryViewPrivate::get(result.provider->view())->m_dirty = false; ++ QGeometryPrivate::get(result.provider->view()->geometry())->m_dirty = false; ++ QAttributePrivate::get(result.positionAttribute)->m_dirty = false; ++ QBufferPrivate::get(result.positionAttribute->buffer())->m_dirty = false; ++ if (result.indexAttribute) { ++ QAttributePrivate::get(result.indexAttribute)->m_dirty = false; ++ QBufferPrivate::get(result.indexAttribute->buffer())->m_dirty = false; ++ } ++ } ++ ++ m_results.clear(); ++} ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ +diff --git a/src/core/jobs/calcboundingvolumejob_p.h b/src/core/jobs/calcboundingvolumejob_p.h +new file mode 100644 (file) +index 0000000..498fe76 +--- /dev/null ++++ b/src/core/jobs/calcboundingvolumejob_p.h +@@ -0,0 +1,113 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_CALCBOUNDINGVOLUMEJOB_H ++#define QT3DCORE_CALCBOUNDINGVOLUMEJOB_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++#include ++ ++#include ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++class CalculateBoundingVolumeJobPrivate; ++class QEntity; ++class QAttribute; ++class QBoundingVolume; ++ ++struct BoundingVolumeComputeData { ++ QEntity *entity = nullptr; ++ QBoundingVolume *provider = nullptr; ++ QAttribute *positionAttribute = nullptr; ++ QAttribute *indexAttribute = nullptr; ++ int vertexCount = 0; ++ ++ bool valid() const { return positionAttribute != nullptr; } ++}; ++ ++struct BoundingVolumeComputeResult { ++ QEntity *entity = nullptr; ++ QBoundingVolume *provider = nullptr; ++ QAttribute *positionAttribute = nullptr; ++ QAttribute *indexAttribute = nullptr; ++ QVector3D m_min; ++ QVector3D m_max; ++ QVector3D m_center; ++ float m_radius = -1.f; ++ ++ bool valid() const { return m_radius >= 0.f; } ++}; ++ ++class Q_3DCORE_PRIVATE_EXPORT CalculateBoundingVolumeJob : public Qt3DCore::QAspectJob ++{ ++public: ++ explicit CalculateBoundingVolumeJob(); ++ ++ void setRoot(QEntity *root) { m_root = root; } ++ void run() override; ++ void postFrame(QAspectEngine *aspectEngine) override; ++ ++private: ++ Q_DECLARE_PRIVATE(CalculateBoundingVolumeJob) ++ QEntity *m_root; ++ QVector m_results; ++}; ++ ++typedef QSharedPointer CalculateBoundingVolumeJobPtr; ++ ++} // namespace Qt3DCore ++ ++QT_END_NAMESPACE ++ ++#endif // QT3DCORE_CALCBOUNDINGVOLUMEJOB_H +diff --git a/src/core/jobs/job_common_p.h b/src/core/jobs/job_common_p.h +new file mode 100644 (file) +index 0000000..6cbf178 +--- /dev/null ++++ b/src/core/jobs/job_common_p.h +@@ -0,0 +1,73 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2020 Klaralvdalens Datakonsult AB (KDAB). ++** Contact: https://www.qt.io/licensing/ ++** ++** This file is part of the Qt3D module of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and The Qt Company. For licensing terms ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 3 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL3 included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 3 requirements ++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 2.0 or (at your option) the GNU General ++** Public license version 3 or any later version approved by the KDE Free ++** Qt Foundation. The licenses are as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-2.0.html and ++** https://www.gnu.org/licenses/gpl-3.0.html. ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QT3DCORE_JOB_COMMON_P_H ++#define QT3DCORE_JOB_COMMON_P_H ++ ++// ++// W A R N I N G ++// ------------- ++// ++// This file is not part of the Qt API. It exists purely as an ++// implementation detail. This header file may change from version to ++// version without notice, or even be removed. ++// ++// We mean it. ++// ++ ++#include ++ ++QT_BEGIN_NAMESPACE ++ ++namespace Qt3DCore { ++ ++namespace JobTypes { ++ ++ enum JobType { ++ LoadBuffer = 4096, ++ CalcBoundingVolume, ++ }; ++ ++} // JobTypes ++ ++} // Qt3DCore ++ ++QT_END_NAMESPACE ++ ++#endif // QT3DCORE_JOB_COMMON_P_H +diff --git a/src/core/jobs/jobs.pri b/src/core/jobs/jobs.pri +index 5d262f5..a045339 100644 (file) +--- a/src/core/jobs/jobs.pri ++++ b/src/core/jobs/jobs.pri +@@ -4,7 +4,8 @@ SOURCES += \ + $$PWD/qaspectjobmanager.cpp \ + $$PWD/qabstractaspectjobmanager.cpp \ + $$PWD/qthreadpooler.cpp \ +- $$PWD/task.cpp ++ $$PWD/task.cpp \ ++ $$PWD/calcboundingvolumejob.cpp + + HEADERS += \ + $$PWD/qaspectjob.h \ +@@ -13,7 +14,9 @@ HEADERS += \ + $$PWD/qaspectjobmanager_p.h \ + $$PWD/qabstractaspectjobmanager_p.h \ + $$PWD/task_p.h \ +- $$PWD/qthreadpooler_p.h ++ $$PWD/qthreadpooler_p.h \ ++ $$PWD/calcboundingvolumejob_p.h \ ++ $$PWD/job_common_p.h + + INCLUDEPATH += $$PWD diff --git a/desktop/toolkit/qt6/qt6-quicktimeline/pspec.xml b/desktop/toolkit/qt6/qt6-quicktimeline/pspec.xml new file mode 100755 index 0000000000..75e329c8bd --- /dev/null +++ b/desktop/toolkit/qt6/qt6-quicktimeline/pspec.xml @@ -0,0 +1,68 @@ + + + + + qt6-quicktimeline + http://qt-project.org/ + + Pisi Linux Admins + admin@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop + Qt module for keyframe-based timeline construction + Qt module for keyframe-based timeline construction + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtquicktimeline-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + qt6-declarative-devel + + + + qt6-quicktimeline + Qt module for keyframe-based timeline construction + + qt6-base + qt6-declarative + libgcc + + + /usr/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules/QuickTimeline.json + + + + + qt6-quicktimeline-devel + Development files for qt6-quicktimeline + + qt6-base-devel + qt6-declarative-devel + qt6-quicktimeline + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-remoteobjects/actions.py b/desktop/toolkit/qt6/qt6-remoteobjects/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-remoteobjects/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-remoteobjects/pspec.xml b/desktop/toolkit/qt6/qt6-remoteobjects/pspec.xml new file mode 100644 index 0000000000..ae889efad2 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-remoteobjects/pspec.xml @@ -0,0 +1,69 @@ + + + + + qt6-remoteobjects + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + Inter-process communication (IPC) module developed for Qt + qt6-remoteobjects + Inter-process communication (IPC) module developed for Qt + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtremoteobjects-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + + + + + qt6-remoteobjects + + qt6-base + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-remoteobjects-devel + Development files for qt6-remoteobjects + + qt6-remoteobjects + qt6-base-devel + qt6-declarative-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-remoteobjects/translations.xml b/desktop/toolkit/qt6/qt6-remoteobjects/translations.xml new file mode 100644 index 0000000000..9f622ab165 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-remoteobjects/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-remoteobjects + Inter-process communication (IPC) module developed for Qt + Inter-process communication (IPC) module developed for Qt + + diff --git a/desktop/toolkit/qt6/qt6-scxml/actions.py b/desktop/toolkit/qt6/qt6-scxml/actions.py new file mode 100755 index 0000000000..b486d40837 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-scxml/actions.py @@ -0,0 +1,21 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-scxml/pspec.xml b/desktop/toolkit/qt6/qt6-scxml/pspec.xml new file mode 100755 index 0000000000..e1f44dde46 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-scxml/pspec.xml @@ -0,0 +1,66 @@ + + + + + qt6-scxml + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + Provides a set of easy to use chart components + Provides a set of easy to use chart components + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtscxml-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + + + qt6-scxml + Provides a set of easy to use chart components + + qt6-base + qt6-declarative + libgcc + + + /usr/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-scxml-devel + Development files for qt6-scxml + + qt6-scxml + qt6-base-devel + qt6-declarative-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-sensors/actions.py b/desktop/toolkit/qt6/qt6-sensors/actions.py new file mode 100755 index 0000000000..acd719b138 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-sensors/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + # qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + #for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + #pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-sensors/pspec.xml b/desktop/toolkit/qt6/qt6-sensors/pspec.xml new file mode 100755 index 0000000000..26e7421755 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-sensors/pspec.xml @@ -0,0 +1,60 @@ + + + + + qt6-sensors + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Provides access to sensor hardware and motion gesture recognition + Provides access to sensor hardware and motion gesture recognition + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtsensors-everywhere-src-6.4.0.tar.xz + + qt6-sql-sqlite + qt6-base-devel + + qt6-declarative-devel + + + + + qt6-sensors + + libgcc + qt6-base + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-sensors-devel + + qt6-sensors + qt6-base-devel + qt6-declarative-devel + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-sensors/translations.xml b/desktop/toolkit/qt6/qt6-sensors/translations.xml new file mode 100755 index 0000000000..c8d793093b --- /dev/null +++ b/desktop/toolkit/qt6/qt6-sensors/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-sensors + Donanım ve hareket algılama sensörüne erişim sağlar + Donanım ve hareket algılama sensörüne erişim sağlar + + + + qt5-sensors-devel + qt5-sensors için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-serialbus/actions.py b/desktop/toolkit/qt6/qt6-serialbus/actions.py new file mode 100755 index 0000000000..c8c3007031 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-serialbus/actions.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") + diff --git a/desktop/toolkit/qt6/qt6-serialbus/pspec.xml b/desktop/toolkit/qt6/qt6-serialbus/pspec.xml new file mode 100755 index 0000000000..625002c39d --- /dev/null +++ b/desktop/toolkit/qt6/qt6-serialbus/pspec.xml @@ -0,0 +1,65 @@ + + + + + qt6-serialbus + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + Qt module for general purpose serial bus access + Qt module for general purpose serial bus access + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtserialbus-everywhere-src-6.4.0.tar.xz + + cmake + ninja + qt6-base-devel + qt6-serialport-devel + + + + qt6-serialbus + Qt module for general purpose serial bus access + + qt6-base + qt6-serialport + + + /usr/bin + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-serialbus-devel + Development files for qt6-serialbus + + qt6-serialbus + qt6-base-devel + qt6-serialport-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-serialport/actions.py b/desktop/toolkit/qt6/qt6-serialport/actions.py new file mode 100755 index 0000000000..acd719b138 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-serialport/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + # qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + #for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + #pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-serialport/pspec.xml b/desktop/toolkit/qt6/qt6-serialport/pspec.xml new file mode 100755 index 0000000000..2ad960f48e --- /dev/null +++ b/desktop/toolkit/qt6/qt6-serialport/pspec.xml @@ -0,0 +1,61 @@ + + + + + qt6-serialport + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Provides access to hardware and virtual serial ports + Provides access to hardware and virtual serial ports + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtserialport-everywhere-src-6.4.0.tar.xz + + ninja + cmake + eudev-devel + qt6-base-devel + qt6-assistant-devel + qt6-sql-sqlite + + + + + qt6-serialport + + qt6-base + eudev + libgcc + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-serialport-devel + + qt6-base-devel + qt6-serialport + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-serialport/translations.xml b/desktop/toolkit/qt6/qt6-serialport/translations.xml new file mode 100755 index 0000000000..89f2f4d536 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-serialport/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-serialport + Donanım ve sanal seri portlara erişim sağlar + Donanım ve sanal seri portlara erişim sağlar + + + + qt5-serialport-devel + qt5-serialport için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-shadertools/actions.py b/desktop/toolkit/qt6/qt6-shadertools/actions.py new file mode 100644 index 0000000000..7974fc34a7 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-shadertools/actions.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-shadertools/pspec.xml b/desktop/toolkit/qt6/qt6-shadertools/pspec.xml new file mode 100644 index 0000000000..0ba41deaed --- /dev/null +++ b/desktop/toolkit/qt6/qt6-shadertools/pspec.xml @@ -0,0 +1,71 @@ + + + + + qt6-shadertools + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + library + Provides functionality for the shader pipeline that allows Qt Quick to operate on Vulkan, Metal, and Direct3D, in addition to OpenGL + qt6-shadertools + OpenGL'ye ek olarak Qt Quick'in Vulkan, Metal ve Direct3D üzerinde çalışmasına izin veren gölgelendirici ardışık düzeni için işlevsellik sağlar + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtshadertools-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + + + + + + qt6-shadertools + + qt6-base + + + /usr/bin + /usr/lib/qt6/bin + /usr/lib + /usr/share + /usr/lib/metatypes + /usr/lib/qt6/mkspecs + /usr/share/qt6/modules + /usr/share/doc + + + + + qt6-shadertools-devel + Development files for qt6-shadertools + + qt6-shadertools + qt6-base-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-06 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-shadertools/translations.xml b/desktop/toolkit/qt6/qt6-shadertools/translations.xml new file mode 100644 index 0000000000..f4cb8cacf9 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-shadertools/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-shadertools + Provides functionality for the shader pipeline that allows Qt Quick to operate on Vulkan, Metal, and Direct3D, in addition to OpenGL + OpenGL'ye ek olarak Qt Quick'in Vulkan, Metal ve Direct3D üzerinde çalışmasına izin veren gölgelendirici ardışık düzeni için işlevsellik sağlar + + diff --git a/desktop/toolkit/qt6/qt6-speech/actions.py b/desktop/toolkit/qt6/qt6-speech/actions.py new file mode 100755 index 0000000000..6c09fc5a21 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-speech/actions.py @@ -0,0 +1,20 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-speech/files/qtspeech-speech-dispatcher_includes.patch b/desktop/toolkit/qt6/qt6-speech/files/qtspeech-speech-dispatcher_includes.patch new file mode 100644 index 0000000000..d8c46363a7 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-speech/files/qtspeech-speech-dispatcher_includes.patch @@ -0,0 +1,19 @@ +diff -up qtspeech-opensource-src-5.9.2/config.tests/speechd/speechd.pro.includes qtspeech-opensource-src-5.9.2/config.tests/speechd/speechd.pro +--- qtspeech-opensource-src-5.9.2/config.tests/speechd/speechd.pro.includes 2017-09-08 08:11:16.000000000 -0500 ++++ qtspeech-opensource-src-5.9.2/config.tests/speechd/speechd.pro 2018-01-25 11:04:10.109329474 -0600 +@@ -1,3 +1,4 @@ + SOURCES = speechd.cpp + ++INCLUDEPATH += /usr/include/speech-dispatcher + LIBS += -lspeechd +diff -up qtspeech-opensource-src-5.9.2/src/plugins/tts/speechdispatcher/speechdispatcher.pro.includes qtspeech-opensource-src-5.9.2/src/plugins/tts/speechdispatcher/speechdispatcher.pro +--- qtspeech-opensource-src-5.9.2/src/plugins/tts/speechdispatcher/speechdispatcher.pro.includes 2017-09-08 08:11:16.000000000 -0500 ++++ qtspeech-opensource-src-5.9.2/src/plugins/tts/speechdispatcher/speechdispatcher.pro 2018-01-25 11:06:07.772179149 -0600 +@@ -9,6 +9,7 @@ QT += core texttospeech + CONFIG += link_pkgconfig + packagesExist(speech-dispatcher): PKGCONFIG = speech-dispatcher + config_speechd: LIBS += -lspeechd ++config_speechd: INCLUDEPATH += /usr/include/speech-dispatcher + + HEADERS += \ + qtexttospeech_speechd.h \ diff --git a/desktop/toolkit/qt6/qt6-speech/pspec.xml b/desktop/toolkit/qt6/qt6-speech/pspec.xml new file mode 100755 index 0000000000..ebad42f5ab --- /dev/null +++ b/desktop/toolkit/qt6/qt6-speech/pspec.xml @@ -0,0 +1,80 @@ + + + + + qt6-speech + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + Qt module to make text to speech and speech recognition easy + Qt module to make text to speech and speech recognition easy + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtspeech-everywhere-src-6.4.0.tar.xz + + ninja + cmake + flite-devel + speech-dispatcher-devel + qt6-base-devel + qt6-multimedia-devel + qt6-declarative-devel + + + + + + + qt6-speech + Qt module to make text to speech and speech recognition easy + + flite + libgcc + speech-dispatcher + qt6-base + qt6-multimedia + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-speech-devel + Development headers for qt6-speech + + qt6-speech + qt6-base-devel + + + /usr/lib/cmake + /usr/include + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2022-07-05 + 5.15.5 + First Release. + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-svg/actions.py b/desktop/toolkit/qt6/qt6-svg/actions.py new file mode 100755 index 0000000000..2f91d32dcc --- /dev/null +++ b/desktop/toolkit/qt6/qt6-svg/actions.py @@ -0,0 +1,30 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +# bindirQt6="/usr/lib/qt6/bin" + +def setup(): + qt6.configure() + +def build(): + qt6.make() + #qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + # for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + # pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-svg/pspec.xml b/desktop/toolkit/qt6/qt6-svg/pspec.xml new file mode 100755 index 0000000000..4d765fdb50 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-svg/pspec.xml @@ -0,0 +1,71 @@ + + + qt6-svg + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + Classes for displaying the contents of SVG files + Classes for displaying the contents of SVG files + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtsvg-everywhere-src-6.4.0.tar.xz + + ninja + cmake + libxkbcommon-devel + zlib-devel + vulkan-headers + qt6-base-devel + + + + qt6-svg + + libgcc + qt6-base + zlib + + + /usr/lib + /usr/lib/qt6 + /usr/share/licenses/ + /usr/share/qt6/modules + /usr/share/doc + + + + + qt6-svg-devel + Development files for qt6-svg + + qt6-base-devel + qt6-svg + + + /usr/include/qt6/ + /usr/lib/pkgconfig + + + + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-svg/translations.xml b/desktop/toolkit/qt6/qt6-svg/translations.xml new file mode 100755 index 0000000000..7d679b325e --- /dev/null +++ b/desktop/toolkit/qt6/qt6-svg/translations.xml @@ -0,0 +1,11 @@ + + + qt5-svg + SVG dosyalarının içeriğini görüntüleme için sınıflar + SVG dosyalarının içeriğini görüntüleme için sınıflar + + + qt5-svg-devel + qt5-svg için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-tools/actions.py b/desktop/toolkit/qt6/qt6-tools/actions.py new file mode 100755 index 0000000000..33ee93aab2 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/actions.py @@ -0,0 +1,29 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import cmaketools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +# bindirQt6="/usr/lib/qt6/bin" + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-tools/files/assistant.desktop b/desktop/toolkit/qt6/qt6-tools/files/assistant.desktop new file mode 100755 index 0000000000..c4e44192b6 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/files/assistant.desktop @@ -0,0 +1,137 @@ +#!/usr/bin/env xdg-open +[Desktop Entry] +Encoding=UTF-8 +Exec=assistant-qt6 +Name=Qt6 Assistant +Name[af]=Qt6 Assistent +Name[ar]=معاون Qt6 +Name[az]=Qt6 Yardımçısı +Name[bn]=কিউ-টি সহায়ক +Name[br]=Skoazeller Qt6 +Name[bs]=Qt6 Asistent +Name[ca]=Assistent Qt6 +Name[cs]=Qt6 asistent +Name[cy]=Cymhorthwr Qt6 +Name[de]=Qt6-Assistent +Name[el]=Βοηθός Qt6 +Name[eo]=Qt6-Asistilo +Name[es]=Asistente Qt6 +Name[eu]=Qt6 laguntzailea +Name[fa]=دستیار Qt6 +Name[fo]=Qt6-hjálpari +Name[fy]=Qt6-assistent +Name[hi]=क्यूटी सहायक +Name[hr]=Qt6 Asistent +Name[hsb]=Qt6 Asistent +Name[ja]=Qt6 アシスタント +Name[km]=អ្នក​ជំនួយការ Qt6 +Name[ko]=Qt6 도우미 +Name[lo]=ຄຳແນະນຳການໃ້ຊ້Qt6 +Name[lv]=Qt6 Asistents +Name[mk]=Qt6-Асистент +Name[mn]=Qt6-туслагч +Name[ms]=Pembantu Qt6 +Name[nds]=Qt6-Hölper +Name[nl]=Qt6 Assistent +Name[nso]=Mothusi wa Qt6 +Name[pa]=Qt6 ਸਹਾਇਕ +Name[pt]=Assistente do Qt6 +Name[pt_BR]=Assistente Qt6 +Name[ro]=Asistent Qt6 +Name[ru]=Помощник Qt6 +Name[rw]=Umufasha Qt6 +Name[sl]=Pomočnik za Qt6 +Name[ss]=Lisekela leQt6 +Name[ta]=Qt6 துணைவன் +Name[tg]=Дастёри Qt6 +Name[th]=คำแนะนำการใช้ Qt6 +Name[tr]=Qt6 Asistanı +Name[uk]=Qt6-асистент +Name[uz]=Qt63 ёрдамчи +Name[ven]=Qt6 Muthusi +Name[vi]=Trợ giúp Qt6 +Name[wa]=Macrea Qt6 +Name[xh]=Qt6 Umncedi +Name[zh_CN]=Qt6 助手 +Name[zh_TW]=Qt6 助理 +Name[zu]=Umsizi we-Qt6 +GenericName=Document Browser +GenericName[af]=Dokument Blaaier +GenericName[ar]=متصفح المستندات +GenericName[az]=Sənəd Səyyahı +GenericName[bg]=Преглед на документи +GenericName[bn]=নথী ব্রাউজার +GenericName[br]=Furcher Teulioù +GenericName[bs]=Preglednik QT dokumenata +GenericName[ca]=Navegador de documents +GenericName[cs]=Prohlížeč dokumentace +GenericName[cy]=Porydd Dogfen +GenericName[da]=Dokumentfremviser +GenericName[de]=Dokumentbrowser +GenericName[el]=Προβολέας εγγράφων +GenericName[eo]=Dokumentorigardilo +GenericName[es]=Navegador de documentos +GenericName[et]=Dokumentatsiooni brauser +GenericName[eu]=Dokumentu arakatzailea +GenericName[fa]=مرورگر سند +GenericName[fi]=Asiakirjaselain +GenericName[fo]=Skjalakagari +GenericName[fr]=Explorateur de documentation Qt6 +GenericName[fy]=Dokumintblêder +GenericName[ga]=Brabhsálaí Cáipéise +GenericName[gl]=Navegador de Documentos +GenericName[he]=דפדפן מסמכים +GenericName[hi]=दस्तावेज़ ब्राउज़रज़र +GenericName[hr]=Preglednik dokumenata +GenericName[hu]=Dokumentumböngésző +GenericName[id]=Peselancar Document +GenericName[is]=Skjalavafri +GenericName[it]=Visualizzatore di documenti +GenericName[ja]=ドキュメントブラウザ +GenericName[km]=កម្មវិធី​រុករក​ឯកសារ +GenericName[ko]=문서 탐색기 +GenericName[lo]=ເຄື່ອງມືເລືອກເບິ່ງແຟ້ມເອກະສານ +GenericName[lt]=Dokumentų naršyklė +GenericName[lv]=Dokumentu Pārlūks +GenericName[mk]=Прелистувач на документи +GenericName[mn]=Баримтын хөтөч +GenericName[ms]=Pelungsur Dokumen +GenericName[mt]=Browser ta' Dokumenti +GenericName[nb]=Dokumentleser +GenericName[nds]=Dokmentkieker +GenericName[nl]=Documentbrowser +GenericName[nn]=Dokumentlesar +GenericName[nso]=Seinyakisi sa Tokomane +GenericName[pa]=ਦਸਤਾਵੇਜ਼ ਝਲਕਾਰਾ +GenericName[pl]=Przeglądarka dokumentów +GenericName[pt]=Navegador de Documentos +GenericName[pt_BR]=Navegador de Documentos +GenericName[ro]=Navigator de documente +GenericName[ru]=Программа просмотра документов +GenericName[rw]=Mucukumbuzi w'Inyandiko +GenericName[se]=Dokumeantalogan +GenericName[sk]=Prehliadač dokumentácie +GenericName[sl]=Pregledovalnik dokumentov +GenericName[sr]=Прегледач докумената +GenericName[sr@Latn]=Pregledač dokumenata +GenericName[ss]=Ibrawuza yelidokhumente +GenericName[sv]=Dokumentbläddrare +GenericName[ta]=ஆவண உலாவி +GenericName[tg]=Тафсири ҳуҷҷат +GenericName[th]=เครื่องมือเลือกดูแฟ้มเอกสาร +GenericName[tr]=Belge Tarayıcısı +GenericName[tt]=İstälek Küzätüçe +GenericName[uk]=Навігатор документів +GenericName[uz]=Ҳужжат браузери +GenericName[ven]=Buronza ya manwalwa +GenericName[vi]=Trình duyệt tài liệu +GenericName[wa]=Foyteu di documints +GenericName[xh]=Umkhangeli Wencwadi Zoxwebhu +GenericName[zh_CN]=文档浏览器 +GenericName[zh_TW]=文件閱讀器 +GenericName[zu]=Umcingi Woshicilelo +X-KDE-StartupNotify=true +Icon=assistant6 +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/desktop/toolkit/qt6/qt6-tools/files/assistant.png b/desktop/toolkit/qt6/qt6-tools/files/assistant.png new file mode 100644 index 0000000000..62c66ed8f5 Binary files /dev/null and b/desktop/toolkit/qt6/qt6-tools/files/assistant.png differ diff --git a/desktop/toolkit/qt6/qt6-tools/files/assistant_tr.qm b/desktop/toolkit/qt6/qt6-tools/files/assistant_tr.qm new file mode 100755 index 0000000000..47b339b31e Binary files /dev/null and b/desktop/toolkit/qt6/qt6-tools/files/assistant_tr.qm differ diff --git a/desktop/toolkit/qt6/qt6-tools/files/designer.desktop b/desktop/toolkit/qt6/qt6-tools/files/designer.desktop new file mode 100755 index 0000000000..1cb9abb97f --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/files/designer.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Name=Qt6 Designer +Name[tr]=Qt6 Tasarımcı +GenericName=Interface Designer +Comment=Design GUIs for Qt applications +Exec=designer-qt6 +Icon=designer6 +MimeType=application/x-designer; +Terminal=false +Type=Application +Categories=Qt;Development; + diff --git a/desktop/toolkit/qt6/qt6-tools/files/designer.png b/desktop/toolkit/qt6/qt6-tools/files/designer.png new file mode 100644 index 0000000000..9e6097c7d3 Binary files /dev/null and b/desktop/toolkit/qt6/qt6-tools/files/designer.png differ diff --git a/desktop/toolkit/qt6/qt6-tools/files/designer_tr.qm b/desktop/toolkit/qt6/qt6-tools/files/designer_tr.qm new file mode 100755 index 0000000000..05c33f03b5 Binary files /dev/null and b/desktop/toolkit/qt6/qt6-tools/files/designer_tr.qm differ diff --git a/desktop/toolkit/qt6/qt6-tools/files/linguist.desktop b/desktop/toolkit/qt6/qt6-tools/files/linguist.desktop new file mode 100755 index 0000000000..33bdde86cb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/files/linguist.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Qt6 Linguist +Name[tr]=Qt6 Dilci +GenericName=Translation tool +Comment=Add translations to Qt6 applications +Exec=linguist-qt6 +Icon=linguist6 +MimeType=text/vnd.trolltech.linguist;application/x-linguist; +Terminal=false +Type=Application +Categories=Qt;Development; diff --git a/desktop/toolkit/qt6/qt6-tools/files/linguist.png b/desktop/toolkit/qt6/qt6-tools/files/linguist.png new file mode 100644 index 0000000000..7c9e8a18d3 Binary files /dev/null and b/desktop/toolkit/qt6/qt6-tools/files/linguist.png differ diff --git a/desktop/toolkit/qt6/qt6-tools/files/linguist_tr.qm b/desktop/toolkit/qt6/qt6-tools/files/linguist_tr.qm new file mode 100755 index 0000000000..b27f613829 Binary files /dev/null and b/desktop/toolkit/qt6/qt6-tools/files/linguist_tr.qm differ diff --git a/desktop/toolkit/qt6/qt6-tools/files/qdbusviewer.desktop b/desktop/toolkit/qt6/qt6-tools/files/qdbusviewer.desktop new file mode 100755 index 0000000000..550ddcf142 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/files/qdbusviewer.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Qt6 QDbusViewer +GenericName=D-Bus Debugger +Comment=Debug D-Bus applications +Exec=qdbusviewer-qt6 +Icon=qdbusviewer6 +Terminal=false +Type=Application +Categories=Qt;Development;Debugger; diff --git a/desktop/toolkit/qt6/qt6-tools/files/qdbusviewer.png b/desktop/toolkit/qt6/qt6-tools/files/qdbusviewer.png new file mode 100644 index 0000000000..a314097e69 Binary files /dev/null and b/desktop/toolkit/qt6/qt6-tools/files/qdbusviewer.png differ diff --git a/desktop/toolkit/qt6/qt6-tools/files/qt5-tools-qtwebkit.patch b/desktop/toolkit/qt6/qt6-tools/files/qt5-tools-qtwebkit.patch new file mode 100644 index 0000000000..18c1180f58 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/files/qt5-tools-qtwebkit.patch @@ -0,0 +1,32 @@ +From 3c30956e65a98706d283d44e07fd481a1849f74e Mon Sep 17 00:00:00 2001 +From: Alexander Volkov +Date: Tue, 26 May 2020 22:20:31 +0300 +Subject: Assistant: Fix build with qtwebkit + +Amend b3cdd63d4bdaea09222fb93ffcd5104a2dc0bf2e. +Don't declare HelpViewer::resizeEvent() when HelpViewer +is inherited from QWebView to avoid linker error. + +Change-Id: Ib4ca6823cf17c238eb08ecc531870d66db202269 +Reviewed-by: Eirik Aavitsland +--- + src/assistant/assistant/helpviewer.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/assistant/assistant/helpviewer.h b/src/assistant/assistant/helpviewer.h +index fa954cc9f..acd38c66e 100644 +--- a/src/assistant/assistant/helpviewer.h ++++ b/src/assistant/assistant/helpviewer.h +@@ -130,7 +130,9 @@ protected: + void wheelEvent(QWheelEvent *event) override; + void mousePressEvent(QMouseEvent *event) override; + void mouseReleaseEvent(QMouseEvent *event) override; ++#if defined(BROWSER_QTEXTBROWSER) + void resizeEvent(QResizeEvent *e) override; ++#endif + + private slots: + void actionChanged(); +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-tools/pspec.xml b/desktop/toolkit/qt6/qt6-tools/pspec.xml new file mode 100755 index 0000000000..e873770c4b --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/pspec.xml @@ -0,0 +1,273 @@ + + + + + qt6-tools + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + A cross-platform application and UI framework (Development Tools, QtHelp) + A cross-platform application and UI framework (Development Tools, QtHelp) + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qttools-everywhere-src-6.4.0.tar.xz + + ninja + cmake + llvm + libxkbcommon-devel + llvm-clang-devel + lld-devel + llvm-mlir + llvm-polly + qt6-base-devel + icon-theme-hicolor + vulkan-headers + qt6-declarative-devel + + + + + + + + qt6-assistant + + libgcc + llvm-libs + llvm-clang + qt6-base + qt6-declarative + + + /usr/bin/qdistancefieldgenerator-qt6 + /usr/bin/assistant-qt6 + /usr/bin/qhelpgenerator-qt6 + /usr/bin/qhelpconverter-qt6 + /usr/bin/qdoc-qt6 + /usr/bin/qtattributionsscanner-qt6 + /usr/lib/qt6/libexec/qtattributionsscanner + + /usr/lib/qt6/bin/qdistancefieldgenerator + /usr/lib/qt6/bin/assistant + /usr/lib/qt6/bin/qhelpgenerator + /usr/lib/qt6/bin/qhelpconverter + /usr/lib/qt6/bin/qdoc + /usr/lib/qt6/bin/qtattributionsscanner + /usr/lib/qt6/libexec/qhelpgenerator + + /usr/lib/cmake/Qt6Help + /usr/lib/libQt6Help* + /usr/lib/libQt6CLucene* + /usr/lib/metatypes/qt6help_relwithdebinfo_metatypes.json + + /usr/lib/qt6/mkspecs/modules/qt_lib_clucene_private.pri + /usr/lib/qt6/mkspecs/modules/qt_lib_help* + /usr/share/applications/assistant6.desktop + /usr/share/qt6/translations/assistant_tr.qm + /usr/share/icons/hicolor/128x128/apps/assistant.png + /usr/share/icons/hicolor/32x32/apps/assistant.png + /usr/share/pixmaps/assistant6.png + /usr/lib/qt6/bin/qcollectiongenerator + /usr/bin/qcollectiongenerator + + /usr/lib/cmake/Qt6DocTools/Qt6DocToolsConfig.cmake + /usr/lib/cmake/Qt6DocTools/Qt6DocToolsConfigVersion.cmake + /usr/lib/cmake/Qt6AttributionsScannerTools/Qt6AttributionsScannerToolsConfig.cmake + /usr/lib/cmake/Qt6AttributionsScannerTools/Qt6AttributionsScannerToolsConfigVersion.cmake + /usr/share/doc/qt6-tools/* + + + + + assistant.desktop + assistant.png + + + + + qt6-assistant-devel + + qt6-base-devel + qt6-assistant + llvm-clang-devel + + + /usr/include/qt6/QtHelp + /usr/include/qt6/QtCLucene + /usr/lib/pkgconfig/Qt6Help.pc + /usr/lib/pkgconfig/Qt6CLucene.pc + + + + + qt6-designer + + libgcc + qt6-base + qt6-declarative + + + /usr/bin/designer-qt6 + /usr/bin/qtdiag-qt6 + /usr/bin/qtpaths-qt6 + /usr/bin/pixeltool-qt6 + /usr/bin/qtplugininfo-qt6 + /usr/bin/qtdiag6-qt6 + + /usr/lib/qt6/bin/designer + /usr/lib/qt6/bin/qtdiag + /usr/lib/qt6/bin/qtpaths + /usr/lib/qt6/bin/pixeltool + /usr/lib/qt6/bin/qtplugininfo + /usr/lib/qt6/bin/qtdiag6 + + + /usr/share/qt6/modules/UiPlugin.json + /usr/share/qt6/modules/UiTools.json + /usr/share/qt6/modules/Tools.json + /usr/share/qt6/modules/Help.json + /usr/share/qt6/modules/DesignerComponentsPrivate.json + /usr/lib/cmake/Qt6Tools/ + /usr/lib/cmake/Qt6ToolsTools/ + /usr/lib/cmake/Qt6/FindWrapLibClang.cmake + /usr/lib/cmake/Qt6BuildInternals/StandaloneTests/QtToolsTestsConfig.cmake + /usr/lib/cmake/Qt6DesignerComponentsPrivate/* + + /usr/lib/cmake/Qt6Designer + /usr/lib/cmake/Qt6UiTools + /usr/lib/cmake/Qt6UiPlugin + /usr/lib/cmake/Qt6DesignerComponents/Qt6DesignerComponentsConfig.cmake + /usr/lib/cmake/Qt6DesignerComponents/Qt6DesignerComponentsConfigVersion.cmake + /usr/lib/qt6/plugins/designer + /usr/share/applications/designer6.desktop + /usr/share/qt6/translations/designer_tr.qm + /usr/share/icons/hicolor/128x128/apps/QtProject-designer.png + /usr/share/pixmaps/designer6.png + /usr/lib/libQt6Designer* + /usr/lib/libQt6UiPlugin.prl + /usr/lib/libQt6UiTools* + /usr/lib/libQt6Tools* + /usr/lib/qt6/mkspecs/modules/qt_lib_designer* + /usr/lib/qt6/mkspecs/modules/qt_lib_uitools* + /usr/lib/qt6/mkspecs/modules/qt_lib_uiplugin.pri + /usr/lib/qt6/mkspecs/modules/qt_lib_tools_private.pri + /usr/lib/metatypes/qt6designer* + /usr/lib/metatypes/qt6uitools* + + /usr/share/qt6/modules/Designer.json + /usr/share/qt6/modules/DesignerComponents.json + + + designer.desktop + + + designer.png + + + + + qt6-designer-devel + + qt6-base-devel + qt6-designer + + + /usr/include/qt6/QtTools/QtTools* + /usr/include/qt6/QtTools/qttools* + /usr/include/qt6/QtTools/6.4.0/QtTools/private/qttools-config_p.h + + /usr/include/qt6/QtDesigner* + /usr/include/qt6/QtUiTools + /usr/include/qt6/QtUiPlugin + /usr/lib/pkgconfig/Qt6Designer* + /usr/lib/pkgconfig/Qt6UiTools.pc + /usr/lib/pkgconfig/Qt6UiPlugin.pc + + + + + qt6-linguist + + qt6-base + libgcc + llvm-libs + llvm-clang + qt6-designer + qt6-declarative + + + /usr/bin/lrelease* + /usr/bin/linguist-qt6 + /usr/bin/lconvert-qt6 + /usr/bin/lupdate* + /usr/bin/lprodump-qt6 + + /usr/lib/qt6/bin/lrelease* + /usr/lib/qt6/bin/linguist + /usr/lib/qt6/bin/lconvert + /usr/lib/qt6/bin/lupdate* + /usr/lib/qt6/bin/lprodump + /usr/lib/qt6/libexec/lupdate-pro + /usr/lib/qt6/libexec/lrelease-pro + /usr/lib/qt6/libexec/lprodump + + /usr/lib/cmake/Qt6Linguist/ + /usr/lib/cmake/Qt6LinguistTools + /usr/share/applications/linguist6.desktop + /usr/share/icons/hicolor/128x128/apps/linguist.png + /usr/share/icons/hicolor/16x16/apps/linguist.png + /usr/share/icons/hicolor/32x32/apps/linguist.png + /usr/share/icons/hicolor/48x48/apps/linguist.png + /usr/share/icons/hicolor/64x64/apps/linguist.png + /usr/share/pixmaps/linguist6.png + /usr/share/qt6/phrasebooks + /usr/share/qt6/translations/linguist_tr.qm + + /usr/lib/pkgconfig/Qt6Linguist.pc + + /usr/share/qt6/modules/Linguist.json + /usr/lib/qt6/mkspecs/modules/qt_lib_linguist.pri + /usr/lib/qt6/mkspecs/modules/qt_lib_linguist_private.pri + + + linguist.desktop + linguist.png + + + + + + + qt6-qdbusviewer + + libgcc + qt6-base + + + /usr/bin/qdbusviewer-qt6 + /usr/bin/qdbus-qt6 + /usr/lib/qt6/bin/qdbusviewer + /usr/lib/qt6/bin/qdbus + /usr/share/applications/qdbusviewer6.desktop + /usr/share/icons/hicolor/128x128/apps/qdbusviewer.png + /usr/share/icons/hicolor/32x32/apps/qdbusviewer.png + /usr/share/pixmaps/qdbusviewer6.png + + + qdbusviewer.desktop + assistant.png + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-tools/translations.xml b/desktop/toolkit/qt6/qt6-tools/translations.xml new file mode 100755 index 0000000000..fc4319ba30 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-tools/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-tools + Qt bir çok platformda çalışabilen ve grafiksel kullanıcı arayüzü (GUI) çatısı (Geliştirme Araçları, Qt Yardım). + Qt bir çok platformda çalışabilen ve grafiksel kullanıcı arayüzü (GUI) çatısı (Geliştirme Araçları, Qt Yardım). + + + + qt5-tools-devel + qt5-tools için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-translations/actions.py b/desktop/toolkit/qt6/qt6-translations/actions.py new file mode 100755 index 0000000000..439301ed63 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-translations/actions.py @@ -0,0 +1,29 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + #qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + #for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + #pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") + + # pisitools.insinto("/usr/share/licenses/qt6-translations/", "LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-translations/pspec.xml b/desktop/toolkit/qt6/qt6-translations/pspec.xml new file mode 100755 index 0000000000..4637146d5c --- /dev/null +++ b/desktop/toolkit/qt6/qt6-translations/pspec.xml @@ -0,0 +1,43 @@ + + + + + qt6-translations + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + A cross-platform application and UI framework (Translations) + A cross-platform application and UI framework (Translations) + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qttranslations-everywhere-src-6.4.0.tar.xz + + qt6-base-devel + qt6-assistant-devel + qt6-sql-sqlite + qt6-linguist + + + + + qt6-translations + + /usr/share/qt6 + /usr/share/doc/ + + + qt6-base + + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-translations/translations.xml b/desktop/toolkit/qt6/qt6-translations/translations.xml new file mode 100755 index 0000000000..bfb3a04e50 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-translations/translations.xml @@ -0,0 +1,8 @@ + + + + qt5-translations + Qt bir çok platformda çalışabilen ve grafiksel kullanıcı arayüzü (GUI) oluşturmaya yarayan bir araç takımıdır(Çeviriler) + Qt bir çok platformda çalışabilen ve grafiksel kullanıcı arayüzü (GUI) oluşturmaya yarayan bir araç takımıdır(Çeviriler) + + diff --git a/desktop/toolkit/qt6/qt6-virtualkeyboard/actions.py b/desktop/toolkit/qt6/qt6-virtualkeyboard/actions.py new file mode 100755 index 0000000000..c8c3007031 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-virtualkeyboard/actions.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/copyleft/gpl.txt + +from pisi.actionsapi import qt6 +from pisi.actionsapi import pisitools + + + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + + pisitools.dodoc("LICENSES/*") + diff --git a/desktop/toolkit/qt6/qt6-virtualkeyboard/pspec.xml b/desktop/toolkit/qt6/qt6-virtualkeyboard/pspec.xml new file mode 100755 index 0000000000..3130c361c0 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-virtualkeyboard/pspec.xml @@ -0,0 +1,62 @@ + + + + + qt6-virtualkeyboard + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + GPL3 + Qt module for general purpose serial bus access + Virtual keyboard framework + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtvirtualkeyboard-everywhere-src-6.4.0.tar.xz + + libxcb-devel + hunspell-devel + qt6-svg-devel + qt6-base-devel + qt6-declarative-devel + + + + qt6-virtualkeyboard + Virtual keyboard framework + + qt6-svg + qt6-base + qt6-declarative + libgcc + libxcb + hunspell + + + /usr/lib + /usr/lib/qt6 + /usr/share/qt6 + /usr/share/doc + + + + qt6-virtualkeyboard-devel + Development headers for qt6-virtualkeyboard + + qt6-virtualkeyboard + + + /usr/include/qt6 + /usr/lib/pkgconfig + /usr/lib/cmake + + + + + 2022-10-07 + 6.4.0 + First Release. + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-wayland/actions.py b/desktop/toolkit/qt6/qt6-wayland/actions.py new file mode 100755 index 0000000000..c49356b140 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/actions.py @@ -0,0 +1,26 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-animate-cursor.patch b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-animate-cursor.patch new file mode 100644 index 0000000000..051754bf48 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-animate-cursor.patch @@ -0,0 +1,122 @@ +From 36974955d13578071387695adb13a47be33e4d32 Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Thu, 28 Nov 2019 02:31:17 +0100 +Subject: Avoid animating single frame cursors + +Currently to determine if a cursor is animated or not we check the +cursor theme delay. + +This doesn't work in practice as by default many cursor themes have a +delay of 50 set even if they don't animate. + +This comes from xcursorgen which specifies a delay of 50ms if there +isn't anything set in the config. +(https://github.com/freedesktop/xcursorgen/blob/master/xcursorgen.c#L92) + +Given many themes will have a delay we should also check the number of +images in a given cursor. + +In order to do that without a double lookup QWaylandCursor needed to +return the native wl_cursor, not wl_cursor_image and move the relevant +logic. + +Change-Id: Ie782ace8054910ae76e61cab33ceca0377194929 +Reviewed-by: Johan Helsing +--- + src/client/qwaylandcursor.cpp | 12 ++---------- + src/client/qwaylandcursor_p.h | 3 +-- + src/client/qwaylandinputdevice.cpp | 16 ++++++++++++---- + 3 files changed, 15 insertions(+), 16 deletions(-) + +diff --git a/src/client/qwaylandcursor.cpp b/src/client/qwaylandcursor.cpp +index 4356b23a..1d3d88be 100644 +--- a/src/client/qwaylandcursor.cpp ++++ b/src/client/qwaylandcursor.cpp +@@ -219,7 +219,7 @@ wl_cursor *QWaylandCursorTheme::requestCursor(WaylandCursor shape) + return nullptr; + } + +-::wl_cursor_image *QWaylandCursorTheme::cursorImage(Qt::CursorShape shape, uint millisecondsIntoAnimation) ++::wl_cursor *QWaylandCursorTheme::cursor(Qt::CursorShape shape) + { + struct wl_cursor *waylandCursor = nullptr; + +@@ -237,15 +237,7 @@ wl_cursor *QWaylandCursorTheme::requestCursor(WaylandCursor shape) + return nullptr; + } + +- int frame = wl_cursor_frame(waylandCursor, millisecondsIntoAnimation); +- ::wl_cursor_image *image = waylandCursor->images[frame]; +- ::wl_buffer *buffer = wl_cursor_image_get_buffer(image); +- if (!buffer) { +- qCWarning(lcQpaWayland) << "Could not find buffer for cursor"; +- return nullptr; +- } +- +- return image; ++ return waylandCursor; + } + + QWaylandCursor::QWaylandCursor(QWaylandDisplay *display) +diff --git a/src/client/qwaylandcursor_p.h b/src/client/qwaylandcursor_p.h +index a4605f3d..751ffa68 100644 +--- a/src/client/qwaylandcursor_p.h ++++ b/src/client/qwaylandcursor_p.h +@@ -75,7 +75,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandCursorTheme + public: + static QWaylandCursorTheme *create(QWaylandShm *shm, int size, const QString &themeName); + ~QWaylandCursorTheme(); +- ::wl_cursor_image *cursorImage(Qt::CursorShape shape, uint millisecondsIntoAnimation = 0); ++ ::wl_cursor *cursor(Qt::CursorShape shape); + + private: + enum WaylandCursor { +@@ -129,7 +129,6 @@ public: + void setPos(const QPoint &pos) override; + + static QSharedPointer cursorBitmapBuffer(QWaylandDisplay *display, const QCursor *cursor); +- struct wl_cursor_image *cursorImage(Qt::CursorShape shape); + + private: + QWaylandDisplay *mDisplay = nullptr; +diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp +index a4098edd..d812918e 100644 +--- a/src/client/qwaylandinputdevice.cpp ++++ b/src/client/qwaylandinputdevice.cpp +@@ -283,8 +283,8 @@ void QWaylandInputDevice::Pointer::updateCursorTheme() + if (!mCursor.theme) + return; // A warning has already been printed in loadCursorTheme + +- if (auto *arrow = mCursor.theme->cursorImage(Qt::ArrowCursor)) { +- int arrowPixelSize = qMax(arrow->width, arrow->height); // Not all cursor themes are square ++ if (auto *arrow = mCursor.theme->cursor(Qt::ArrowCursor)) { ++ int arrowPixelSize = qMax(arrow->images[0]->width, arrow->images[0]->height); // Not all cursor themes are square + while (scale > 1 && arrowPixelSize / scale < cursorSize()) + --scale; + } else { +@@ -326,12 +326,20 @@ void QWaylandInputDevice::Pointer::updateCursor() + + // Set from shape using theme + uint time = seat()->mCursor.animationTimer.elapsed(); +- if (struct ::wl_cursor_image *image = mCursor.theme->cursorImage(shape, time)) { ++ ++ if (struct ::wl_cursor *waylandCursor = mCursor.theme->cursor(shape)) { ++ int frame = wl_cursor_frame(waylandCursor, time); ++ ::wl_cursor_image *image = waylandCursor->images[frame]; ++ + struct wl_buffer *buffer = wl_cursor_image_get_buffer(image); ++ if (!buffer) { ++ qCWarning(lcQpaWayland) << "Could not find buffer for cursor" << shape; ++ return; ++ } + int bufferScale = mCursor.themeBufferScale; + QPoint hotspot = QPoint(image->hotspot_x, image->hotspot_y) / bufferScale; + QSize size = QSize(image->width, image->height) / bufferScale; +- bool animated = image->delay > 0; ++ bool animated = waylandCursor->image_count > 1 && image->delay > 0; + getOrCreateCursorSurface()->update(buffer, hotspot, size, bufferScale, animated); + return; + } +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-cursor-timer.patch b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-cursor-timer.patch new file mode 100644 index 0000000000..08e43e96bf --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-cursor-timer.patch @@ -0,0 +1,125 @@ +From ce15889614f87b5986f997beffd2826471adfe51 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Fri, 13 Dec 2019 22:15:32 +0100 +Subject: Drive cursor animation with a timer + +Using only wl_surface_frame callbacks to update the cursor does so much +more often than needed. In addition, at least GNOME and Weston fire the +callback for the cursor surface immediately, which ends up updating the +cursor at over 3000 Hz here. + +Use wl_cursor_frame_and_duration to drive a single shot timer. This +function is also guaranteed to return 0 for single frame cursors, so we +can avoid starting the timer at all. + +We wait for both the surface frame callback and the timer to fire before +updating the cursor for the next frame of animation. This reduces our +update rate to the frame rate of the cursor or the rate requested by the +compositor, whichever is lower. + +Change-Id: I10277460ebe9b547ebaf7f73424b9ef17614107f +Reviewed-by: Johan Helsing +--- + src/client/qwaylandinputdevice.cpp | 34 +++++++++++++++++++++++++++++++--- + src/client/qwaylandinputdevice_p.h | 5 +++++ + 2 files changed, 36 insertions(+), 3 deletions(-) + +diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp +index 3b26dc42..3f0d61d6 100644 +--- a/src/client/qwaylandinputdevice.cpp ++++ b/src/client/qwaylandinputdevice.cpp +@@ -143,6 +143,12 @@ QWaylandWindow *QWaylandInputDevice::Keyboard::focusWindow() const + QWaylandInputDevice::Pointer::Pointer(QWaylandInputDevice *seat) + : mParent(seat) + { ++#if QT_CONFIG(cursor) ++ mCursor.frameTimer.setSingleShot(true); ++ mCursor.frameTimer.callOnTimeout([&]() { ++ cursorTimerCallback(); ++ }); ++#endif + } + + QWaylandInputDevice::Pointer::~Pointer() +@@ -224,7 +230,7 @@ public: + if (animated) { + m_frameCallback.reset(new WlCallback(frame(), [this](uint32_t time){ + Q_UNUSED(time); +- m_pointer->updateCursor(); ++ m_pointer->cursorFrameCallback(); + })); + } + commit(); +@@ -328,7 +334,8 @@ void QWaylandInputDevice::Pointer::updateCursor() + uint time = seat()->mCursor.animationTimer.elapsed(); + + if (struct ::wl_cursor *waylandCursor = mCursor.theme->cursor(shape)) { +- int frame = wl_cursor_frame(waylandCursor, time); ++ uint duration = 0; ++ int frame = wl_cursor_frame_and_duration(waylandCursor, time, &duration); + ::wl_cursor_image *image = waylandCursor->images[frame]; + + struct wl_buffer *buffer = wl_cursor_image_get_buffer(image); +@@ -339,7 +346,12 @@ void QWaylandInputDevice::Pointer::updateCursor() + int bufferScale = mCursor.themeBufferScale; + QPoint hotspot = QPoint(image->hotspot_x, image->hotspot_y) / bufferScale; + QSize size = QSize(image->width, image->height) / bufferScale; +- bool animated = waylandCursor->image_count > 1 && image->delay > 0; ++ bool animated = duration > 0; ++ if (animated) { ++ mCursor.gotFrameCallback = false; ++ mCursor.gotTimerCallback = false; ++ mCursor.frameTimer.start(duration); ++ } + getOrCreateCursorSurface()->update(buffer, hotspot, size, bufferScale, animated); + return; + } +@@ -354,6 +366,22 @@ CursorSurface *QWaylandInputDevice::Pointer::getOrCreateCursorSurface() + return mCursor.surface.get(); + } + ++void QWaylandInputDevice::Pointer::cursorTimerCallback() ++{ ++ mCursor.gotTimerCallback = true; ++ if (mCursor.gotFrameCallback) { ++ updateCursor(); ++ } ++} ++ ++void QWaylandInputDevice::Pointer::cursorFrameCallback() ++{ ++ mCursor.gotFrameCallback = true; ++ if (mCursor.gotTimerCallback) { ++ updateCursor(); ++ } ++} ++ + #endif // QT_CONFIG(cursor) + + QWaylandInputDevice::Touch::Touch(QWaylandInputDevice *p) +diff --git a/src/client/qwaylandinputdevice_p.h b/src/client/qwaylandinputdevice_p.h +index 60d6f2c1..a567c57b 100644 +--- a/src/client/qwaylandinputdevice_p.h ++++ b/src/client/qwaylandinputdevice_p.h +@@ -286,6 +286,8 @@ public: + int idealCursorScale() const; + void updateCursorTheme(); + void updateCursor(); ++ void cursorTimerCallback(); ++ void cursorFrameCallback(); + CursorSurface *getOrCreateCursorSurface(); + #endif + QWaylandInputDevice *seat() const { return mParent; } +@@ -325,6 +327,9 @@ public: + QWaylandCursorTheme *theme = nullptr; + int themeBufferScale = 0; + QScopedPointer surface; ++ QTimer frameTimer; ++ bool gotFrameCallback = false; ++ bool gotTimerCallback = false; + } mCursor; + #endif + QPointF mSurfacePos; +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-libglvnd-egl.patch b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-libglvnd-egl.patch new file mode 100644 index 0000000000..97f628689f --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-libglvnd-egl.patch @@ -0,0 +1,32 @@ +From c2105d8b7e16cc934b886537968228f6300bf4bc Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing +Date: Fri, 8 Nov 2019 13:58:04 +0100 +Subject: Fix compilation of linuxdmabuf compositor plugin + +Mesa's eglext.h no longer includes eglmesaext.h, so copy over the typedefs we need. + +Fixes: QTBUG-79709 +Change-Id: I3190ef56e0e162636efea440dff7e760cf11fcd0 +Reviewed-by: Laszlo Agocs +--- + .../compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h +index 8554721e..02b5b6f8 100644 +--- a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h ++++ b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h +@@ -58,6 +58,10 @@ + #define DRM_FORMAT_MOD_INVALID fourcc_mod_code(NONE, DRM_FORMAT_RESERVED) + #endif + ++// Copied from eglmesaext.h ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); ++typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNBINDWAYLANDDISPLAYWL) (EGLDisplay dpy, struct wl_display *display); ++ + QT_BEGIN_NAMESPACE + + class QWaylandCompositor; +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-linux-dmabuf-2.patch b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-linux-dmabuf-2.patch new file mode 100644 index 0000000000..9087475c78 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-linux-dmabuf-2.patch @@ -0,0 +1,30 @@ +From a2be69d47884dd995ac6e9004ba2855f354f7522 Mon Sep 17 00:00:00 2001 +From: "Jan Alexander Steffens (heftig)" +Date: Sun, 15 Dec 2019 00:07:08 +0100 +Subject: Client: Fix detection of linux-dmabuf + +Change I84c8c1008724b49b6bedb4fc3ef398e292f1c6c7 fixed the tests in +compositor/configure.json but missed the test in client/configure.json. + +Change-Id: I65ad424406438baa74ca80a9418e133510142118 +Reviewed-by: Johan Helsing +--- + src/client/configure.json | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/configure.json b/src/client/configure.json +index e9e16324..06213968 100644 +--- a/src/client/configure.json ++++ b/src/client/configure.json +@@ -74,7 +74,7 @@ + "label": "Linux dma-buf Buffer Sharing", + "type": "compile", + "test": "dmabuf_server_buffer", +- "use": "egl" ++ "use": "egl drm" + }, + "vulkan-server-buffer": { + "label": "Vulkan Buffer Sharing", +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-linux-dmabuf.patch b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-linux-dmabuf.patch new file mode 100644 index 0000000000..5499d98327 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qt5-wayland-linux-dmabuf.patch @@ -0,0 +1,67 @@ +From 09861f0081e6729383808ac4803c7fd1f0ba6dd1 Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing +Date: Fri, 15 Nov 2019 11:52:46 +0100 +Subject: Fix detection of linux-dmabuf + +On some systems drm_fourcc.h is not in /usr/include, but in +/usr/include/libdrm, and that path can be found through pkg-config. This is +already done with the drm lib in qtbase/src/configure.json so this just tells +the test (and the plugins) to use the include paths for the existing "drm" lib. + +Fixes: QTBUG-80075 +Change-Id: I84c8c1008724b49b6bedb4fc3ef398e292f1c6c7 +Reviewed-by: Andreas Cord-Landwehr +Reviewed-by: Paul Olav Tvete +--- + src/compositor/configure.json | 4 ++-- + src/hardwareintegration/compositor/dmabuf-server/dmabuf-server.pri | 2 +- + .../compositor/linux-dmabuf-unstable-v1/linux-dmabuf-unstable-v1.pri | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/compositor/configure.json b/src/compositor/configure.json +index 46caceff..0dbb3364 100644 +--- a/src/compositor/configure.json ++++ b/src/compositor/configure.json +@@ -80,13 +80,13 @@ + "label": "Linux dma-buf Buffer Sharing", + "type": "compile", + "test": "dmabuf_server_buffer", +- "use": "egl" ++ "use": "egl drm" + }, + "dmabuf-client-buffer": { + "label": "Linux Client dma-buf Buffer Sharing", + "type": "compile", + "test": "dmabuf_client_buffer", +- "use": "egl" ++ "use": "egl drm" + }, + "vulkan-server-buffer": { + "label": "Vulkan Buffer Sharing", +diff --git a/src/hardwareintegration/compositor/dmabuf-server/dmabuf-server.pri b/src/hardwareintegration/compositor/dmabuf-server/dmabuf-server.pri +index 2df10109..41f483c4 100644 +--- a/src/hardwareintegration/compositor/dmabuf-server/dmabuf-server.pri ++++ b/src/hardwareintegration/compositor/dmabuf-server/dmabuf-server.pri +@@ -1,6 +1,6 @@ + INCLUDEPATH += $$PWD + +-QMAKE_USE_PRIVATE += egl wayland-server ++QMAKE_USE_PRIVATE += egl drm wayland-server + + SOURCES += \ + $$PWD/dmabufserverbufferintegration.cpp +diff --git a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linux-dmabuf-unstable-v1.pri b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linux-dmabuf-unstable-v1.pri +index a7630040..4dbbae19 100644 +--- a/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linux-dmabuf-unstable-v1.pri ++++ b/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linux-dmabuf-unstable-v1.pri +@@ -1,6 +1,6 @@ + INCLUDEPATH += $$PWD + +-QMAKE_USE_PRIVATE += egl wayland-server ++QMAKE_USE_PRIVATE += egl drm wayland-server + + CONFIG += wayland-scanner + WAYLANDSERVERSOURCES += $$PWD/../../../3rdparty/protocol/linux-dmabuf-unstable-v1.xml +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qtbug-62044.patch b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-62044.patch new file mode 100755 index 0000000000..caf3f746fd --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-62044.patch @@ -0,0 +1,50 @@ +From fd9fec4fc7f43fb939e8e5a946c7858390bbd9d3 Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing +Date: Thu, 8 Feb 2018 16:53:39 +0100 +Subject: [PATCH] Fix crash when connecting a new screen + +In QWaylandWindow::virtualSiblings, don't include screens that have not been +added yet. I.e. QWaylandScreens for which QPlatformIntegration::screenAdded has +not yet been called. + +There are two reasons why this crash wasn't covered by the +removePrimaryScreen() test. First of all, the mock output didn't send +wl_output.done events when updating the mode/geometry. These wayland events are +what causes QWindowSystemInterface::handleScreenGeometryChange() to be called +(where virtualSiblings are called). + +Furthermore, virtualSiblings is only called when the geometry actually changes, +so add a new test that changes the screen geometry of the existing screen while +a new one is being added (i.e. moves it to the right). + +Task-number: QTBUG-62044 +Change-Id: I623fbf8799d21c6b9293e7120ded301277639cc6 +Reviewed-by: David Edmundson +Reviewed-by: Aleix Pol +Reviewed-by: Paul Olav Tvete +--- + src/client/qwaylandscreen.cpp | 6 ++++-- + tests/auto/client/client/tst_client.cpp | 25 +++++++++++++++++++++++++ + tests/auto/client/shared/mockcompositor.cpp | 8 ++++++++ + tests/auto/client/shared/mockcompositor.h | 2 ++ + tests/auto/client/shared/mockoutput.cpp | 27 +++++++++++++++++++++++++-- + tests/auto/client/shared/mockoutput.h | 1 + + 6 files changed, 65 insertions(+), 4 deletions(-) + +diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp +index fba75557..1c9ce23b 100644 +--- a/src/client/qwaylandscreen.cpp ++++ b/src/client/qwaylandscreen.cpp +@@ -138,8 +138,10 @@ QList QWaylandScreen::virtualSiblings() const + QList list; + const QList screens = mWaylandDisplay->screens(); + list.reserve(screens.count()); +- foreach (QWaylandScreen *screen, screens) +- list << screen; ++ for (QWaylandScreen *screen : qAsConst(screens)) { ++ if (screen->screen()) ++ list << screen; ++ } + return list; + } + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qtbug-66867.patch b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-66867.patch new file mode 100755 index 0000000000..bb040279b4 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-66867.patch @@ -0,0 +1,30 @@ +From e283cc059c83cbb4fe677beaca8aebb99156ccc5 Mon Sep 17 00:00:00 2001 +From: Antonio Larrosa +Date: Mon, 5 Mar 2018 13:56:15 +0100 +Subject: Test for null pointer before using it + +Task-number: QTBUG-66867 +Change-Id: Ibbe407fa3ac32141b52fa0086e9f1ebfd27052ba +Done-with: Fabian Vogt +Reviewed-by: Johan Helsing +Reviewed-by: Jan Grulich +--- + src/client/qwaylandwindow.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index ecab8ffc..7d868b30 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -785,7 +785,7 @@ static QWaylandWindow *closestShellSurfaceWindow(QWindow *window) + { + while (window) { + auto w = static_cast(window->handle()); +- if (w->shellSurface()) ++ if (w && w->shellSurface()) + return w; + window = window->transientParent() ? window->transientParent() : window->parent(); + } +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qtbug-67150.patch b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-67150.patch new file mode 100755 index 0000000000..3af2e0852d --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-67150.patch @@ -0,0 +1,91 @@ +From 26a6372bb0c6528358e34f8175a14ff0be47fb12 Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing +Date: Mon, 19 Mar 2018 10:21:47 +0100 +Subject: xdg-shell v5,v6 shell integrations: Fix crash when showing popups + +If a popup was shown without any input events happening first, it would cause +nullptr dereferences in both xdg-shell v5 and v6. + +Fixes crashes in: + +- tst_QAccessibility::comboBoxTest +- tst_QAccessibility::menuTest +- tst_QWindow::touchInterruptedByPopup +- tst_QFocusEvent::checkReason_Popup + +Task-number: QTBUG-67150 +Change-Id: Ib3e06326f71e4ab5f74727cb4f79626a21c34d55 +Reviewed-by: Paul Olav Tvete +--- + src/client/qwaylandxdgshell.cpp | 3 +-- + src/client/qwaylandxdgshell_p.h | 2 +- + src/client/qwaylandxdgshellintegration.cpp | 5 +++-- + src/client/qwaylandxdgshellv6.cpp | 5 +++-- + 4 files changed, 8 insertions(+), 7 deletions(-) + +diff --git a/src/client/qwaylandxdgshell.cpp b/src/client/qwaylandxdgshell.cpp +index 8b252b95..9a34e72d 100644 +--- a/src/client/qwaylandxdgshell.cpp ++++ b/src/client/qwaylandxdgshell.cpp +@@ -73,12 +73,11 @@ QWaylandXdgSurface *QWaylandXdgShell::createXdgSurface(QWaylandWindow *window) + return new QWaylandXdgSurface(this, window); + } + +-QWaylandXdgPopup *QWaylandXdgShell::createXdgPopup(QWaylandWindow *window) ++QWaylandXdgPopup *QWaylandXdgShell::createXdgPopup(QWaylandWindow *window, QWaylandInputDevice *inputDevice) + { + QWaylandWindow *parentWindow = m_popups.empty() ? window->transientParent() : m_popups.last(); + ::wl_surface *parentSurface = parentWindow->object(); + +- QWaylandInputDevice *inputDevice = window->display()->lastInputDevice(); + if (m_popupSerial == 0) + m_popupSerial = inputDevice->serial(); + ::wl_seat *seat = inputDevice->wl_seat(); +diff --git a/src/client/qwaylandxdgshell_p.h b/src/client/qwaylandxdgshell_p.h +index afbd9c59..761f2521 100644 +--- a/src/client/qwaylandxdgshell_p.h ++++ b/src/client/qwaylandxdgshell_p.h +@@ -79,7 +79,7 @@ public: + ~QWaylandXdgShell() override; + + QWaylandXdgSurface *createXdgSurface(QWaylandWindow *window); +- QWaylandXdgPopup *createXdgPopup(QWaylandWindow *window); ++ QWaylandXdgPopup *createXdgPopup(QWaylandWindow *window, QWaylandInputDevice *inputDevice); + + private: + void xdg_shell_ping(uint32_t serial) override; +diff --git a/src/client/qwaylandxdgshellintegration.cpp b/src/client/qwaylandxdgshellintegration.cpp +index 5fa4385d..ee72c2d5 100644 +--- a/src/client/qwaylandxdgshellintegration.cpp ++++ b/src/client/qwaylandxdgshellintegration.cpp +@@ -74,8 +74,9 @@ bool QWaylandXdgShellIntegration::initialize(QWaylandDisplay *display) + + QWaylandShellSurface *QWaylandXdgShellIntegration::createShellSurface(QWaylandWindow *window) + { +- if (window->window()->type() == Qt::WindowType::Popup) +- return m_xdgShell->createXdgPopup(window); ++ QWaylandInputDevice *inputDevice = window->display()->lastInputDevice(); ++ if (window->window()->type() == Qt::WindowType::Popup && inputDevice) ++ return m_xdgShell->createXdgPopup(window, inputDevice); + else + return m_xdgShell->createXdgSurface(window); + } +diff --git a/src/client/qwaylandxdgshellv6.cpp b/src/client/qwaylandxdgshellv6.cpp +index c89c8316..a166a3bc 100644 +--- a/src/client/qwaylandxdgshellv6.cpp ++++ b/src/client/qwaylandxdgshellv6.cpp +@@ -165,8 +165,9 @@ void QWaylandXdgSurfaceV6::setAppId(const QString &appId) + + void QWaylandXdgSurfaceV6::setType(Qt::WindowType type, QWaylandWindow *transientParent) + { +- if ((type == Qt::Popup || type == Qt::ToolTip) && transientParent) { +- setPopup(transientParent, m_window->display()->lastInputDevice(), m_window->display()->lastInputSerial(), type == Qt::Popup); ++ QWaylandDisplay *display = m_window->display(); ++ if ((type == Qt::Popup || type == Qt::ToolTip) && transientParent && display->lastInputDevice()) { ++ setPopup(transientParent, display->lastInputDevice(), display->lastInputSerial(), type == Qt::Popup); + } else { + setToplevel(); + if (transientParent) { +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qtbug-80613.patch b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-80613.patch new file mode 100644 index 0000000000..dc157ca15e --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qtbug-80613.patch @@ -0,0 +1,39 @@ +From 80ed5501cf5dcc4b6ef2a1a126d9d564c1c73851 Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing +Date: Mon, 9 Dec 2019 11:06:18 +0100 +Subject: Client: Fix inverse repeat rate implementation + +The rate from wl_keyboard.repeat_info was used as if it was an interval. Fixed +by converting from key strokes per second to milliseconds per key stroke. + +This fixes a regression, as repeat rate used to be hard-coded to something +sensible before. + +[ChangeLog][QPA plugin] Fixed keyboard repeat rate being set inversely, so +higher rates would actually result in fewer characters per second, and vice +versa. + +Fixes: QTBUG-80613 +Change-Id: Ie783b90cba13dde6f37c0cd1be584d352cddfe7c +Reviewed-by: David Edmundson +Reviewed-by: Paul Olav Tvete +--- + src/client/qwaylandinputdevice.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp +index d812918e..3b26dc42 100644 +--- a/src/client/qwaylandinputdevice.cpp ++++ b/src/client/qwaylandinputdevice.cpp +@@ -88,7 +88,7 @@ QWaylandInputDevice::Keyboard::Keyboard(QWaylandInputDevice *p) + // or the server didn't send an enter event first. + return; + } +- mRepeatTimer.setInterval(mRepeatRate); ++ mRepeatTimer.setInterval(1000 / mRepeatRate); + handleKey(mRepeatKey.time, QEvent::KeyRelease, mRepeatKey.key, mRepeatKey.modifiers, + mRepeatKey.code, mRepeatKey.nativeVirtualKey, mRepeatKey.nativeModifiers, + mRepeatKey.text, true); +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qtwayland-context-create.patch b/desktop/toolkit/qt6/qt6-wayland/files/qtwayland-context-create.patch new file mode 100755 index 0000000000..33c12a8c6d --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qtwayland-context-create.patch @@ -0,0 +1,44 @@ +From 7ce033cbf9a80d2ea5d687956da668cf4567d361 Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing +Date: Fri, 9 Mar 2018 10:30:52 +0100 +Subject: Don't try to create compatibility GL context when profile is unset + +Context creation would sometimes fail because of this. + +Change-Id: Icf73a42ee2bb984ebfc09b7ed98f094d544134b8 +Reviewed-by: Pier Luigi Fiorini +Reviewed-by: Andy Nichols +--- + .../client/wayland-egl/qwaylandglcontext.cpp | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +index 740e9641..6e48659d 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +@@ -259,10 +259,18 @@ QWaylandGLContext::QWaylandGLContext(EGLDisplay eglDisplay, QWaylandDisplay *dis + } + // Profiles are OpenGL only and mandatory in 3.2+. The value is silently ignored for < 3.2. + if (m_format.renderableType() == QSurfaceFormat::OpenGL) { +- eglContextAttrs.append(EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR); +- eglContextAttrs.append(format.profile() == QSurfaceFormat::CoreProfile +- ? EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR +- : EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR); ++ switch (format.profile()) { ++ case QSurfaceFormat::NoProfile: ++ break; ++ case QSurfaceFormat::CoreProfile: ++ eglContextAttrs.append(EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR); ++ eglContextAttrs.append(EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR); ++ break; ++ case QSurfaceFormat::CompatibilityProfile: ++ eglContextAttrs.append(EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR); ++ eglContextAttrs.append(EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR); ++ break; ++ } + } + } + eglContextAttrs.append(EGL_NONE); +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/files/qtwayland-key-compose.patch b/desktop/toolkit/qt6/qt6-wayland/files/qtwayland-key-compose.patch new file mode 100755 index 0000000000..3d57269238 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/files/qtwayland-key-compose.patch @@ -0,0 +1,176 @@ +From 57c4af2b18c0fb1d266b245a107fa6cb876b9d9e Mon Sep 17 00:00:00 2001 +From: Giulio Camuffo +Date: Fri, 1 May 2015 17:12:22 +0300 +Subject: Implement basic key composition support + +Use xkbcommon-compose to handle basic compose key support. We should expand on +it in the future to handle things like resetting the compose state on text +field switching. + +Task-number: QTBUG-54792 +Task-number: QTBUG-64572 +Change-Id: I9d1d5ca4c9991928e12979f69eaa477e0cb28ada +Reviewed-by: Paul Olav Tvete +--- + src/client/qwaylandinputdevice.cpp | 65 +++++++++++++++++++++++++++++++++++++- + src/client/qwaylandinputdevice_p.h | 9 ++++++ + 2 files changed, 73 insertions(+), 1 deletion(-) + +diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp +index f6287ba8..115d6dbc 100644 +--- a/src/client/qwaylandinputdevice.cpp ++++ b/src/client/qwaylandinputdevice.cpp +@@ -70,6 +70,10 @@ + + #include + ++#if QT_CONFIG(xkbcommon_evdev) ++#include ++#endif ++ + QT_BEGIN_NAMESPACE + + namespace QtWaylandClient { +@@ -113,6 +117,7 @@ bool QWaylandInputDevice::Keyboard::createDefaultKeyMap() + qWarning() << "xkb_map_new_from_names failed, no key input"; + return false; + } ++ createComposeState(); + return true; + } + +@@ -125,11 +130,41 @@ void QWaylandInputDevice::Keyboard::releaseKeyMap() + if (mXkbContext) + xkb_context_unref(mXkbContext); + } ++ ++void QWaylandInputDevice::Keyboard::createComposeState() ++{ ++ static const char *locale = nullptr; ++ if (!locale) { ++ locale = getenv("LC_ALL"); ++ if (!locale) ++ locale = getenv("LC_CTYPE"); ++ if (!locale) ++ locale = getenv("LANG"); ++ if (!locale) ++ locale = "C"; ++ } ++ ++ mXkbComposeTable = xkb_compose_table_new_from_locale(mXkbContext, locale, XKB_COMPOSE_COMPILE_NO_FLAGS); ++ if (mXkbComposeTable) ++ mXkbComposeState = xkb_compose_state_new(mXkbComposeTable, XKB_COMPOSE_STATE_NO_FLAGS); ++} ++ ++void QWaylandInputDevice::Keyboard::releaseComposeState() ++{ ++ if (mXkbComposeState) ++ xkb_compose_state_unref(mXkbComposeState); ++ if (mXkbComposeTable) ++ xkb_compose_table_unref(mXkbComposeTable); ++ mXkbComposeState = nullptr; ++ mXkbComposeTable = nullptr; ++} ++ + #endif + + QWaylandInputDevice::Keyboard::~Keyboard() + { + #if QT_CONFIG(xkbcommon_evdev) ++ releaseComposeState(); + releaseKeyMap(); + #endif + if (mFocus) +@@ -626,6 +661,7 @@ void QWaylandInputDevice::Keyboard::keyboard_keymap(uint32_t format, int32_t fd, + + // Release the old keymap resources in the case they were already created in + // the key event or when the compositor issues a new map ++ releaseComposeState(); + releaseKeyMap(); + + mXkbContext = xkb_context_new(xkb_context_flags(0)); +@@ -634,6 +670,8 @@ void QWaylandInputDevice::Keyboard::keyboard_keymap(uint32_t format, int32_t fd, + close(fd); + + mXkbState = xkb_state_new(mXkbMap); ++ createComposeState(); ++ + #else + Q_UNUSED(format); + Q_UNUSED(fd); +@@ -717,12 +755,37 @@ void QWaylandInputDevice::Keyboard::keyboard_key(uint32_t serial, uint32_t time, + return; + } + +- const xkb_keysym_t sym = xkb_state_key_get_one_sym(mXkbState, code); ++ QString composedText; ++ xkb_keysym_t sym = xkb_state_key_get_one_sym(mXkbState, code); ++ if (mXkbComposeState) { ++ if (isDown) ++ xkb_compose_state_feed(mXkbComposeState, sym); ++ xkb_compose_status status = xkb_compose_state_get_status(mXkbComposeState); ++ ++ switch (status) { ++ case XKB_COMPOSE_COMPOSED: { ++ int size = xkb_compose_state_get_utf8(mXkbComposeState, nullptr, 0); ++ QVarLengthArray buffer(size + 1); ++ xkb_compose_state_get_utf8(mXkbComposeState, buffer.data(), buffer.size()); ++ composedText = QString::fromUtf8(buffer.constData()); ++ sym = xkb_compose_state_get_one_sym(mXkbComposeState); ++ xkb_compose_state_reset(mXkbComposeState); ++ } break; ++ case XKB_COMPOSE_COMPOSING: ++ case XKB_COMPOSE_CANCELLED: ++ return; ++ case XKB_COMPOSE_NOTHING: ++ break; ++ } ++ } + + Qt::KeyboardModifiers modifiers = mParent->modifiers(); + + std::tie(qtkey, text) = QWaylandXkb::keysymToQtKey(sym, modifiers); + ++ if (!composedText.isNull()) ++ text = composedText; ++ + sendKey(window->window(), time, type, qtkey, modifiers, code, sym, mNativeModifiers, text); + #else + // Generic fallback for single hard keys: Assume 'key' is a Qt key code. +diff --git a/src/client/qwaylandinputdevice_p.h b/src/client/qwaylandinputdevice_p.h +index adff3f11..07d261f3 100644 +--- a/src/client/qwaylandinputdevice_p.h ++++ b/src/client/qwaylandinputdevice_p.h +@@ -77,6 +77,11 @@ + struct wl_cursor_image; + #endif + ++#if QT_CONFIG(xkbcommon_evdev) ++struct xkb_compose_state; ++struct xkb_compose_table; ++#endif ++ + QT_BEGIN_NAMESPACE + + namespace QtWaylandClient { +@@ -208,6 +213,8 @@ public: + xkb_context *mXkbContext; + xkb_keymap *mXkbMap; + xkb_state *mXkbState; ++ xkb_compose_table *mXkbComposeTable = nullptr; ++ xkb_compose_state *mXkbComposeState = nullptr; + #endif + uint32_t mNativeModifiers; + +@@ -229,6 +236,8 @@ private: + #if QT_CONFIG(xkbcommon_evdev) + bool createDefaultKeyMap(); + void releaseKeyMap(); ++ void createComposeState(); ++ void releaseComposeState(); + #endif + + }; +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-wayland/pspec.xml b/desktop/toolkit/qt6/qt6-wayland/pspec.xml new file mode 100755 index 0000000000..1cbdaca757 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/pspec.xml @@ -0,0 +1,88 @@ + + + + + qt6-wayland + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Provides APIs for Wayland + Provides APIs for Wayland + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwayland-everywhere-src-6.4.0.tar.xz + + cmake + ninja + wayland-devel + vulkan-headers + libxkbcommon-devel --> + libXcomposite-devel + xorg-xwayland-devel + qt6-base-devel + qt6-declarative-devel + + + + + + + + qt6-wayland + + libX11 + libgcc + libglvnd + wayland + wayland-client + wayland-cursor + libxkbcommon + libXcomposite + wayland-server + qt6-base + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/lib/qt6/bin + /usr/bin + /usr/share/doc + /usr/share/qt6/modules/* + + + + + qt6-wayland-devel + + qt6-wayland + qt6-base-devel + qt6-declarative-devel + + + /usr/lib/pkgconfig + /usr/include + + + + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-wayland/translations.xml b/desktop/toolkit/qt6/qt6-wayland/translations.xml new file mode 100755 index 0000000000..657aeb9046 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-wayland/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-wayland + Wayland için API'ler sağlar + Wayland için API'ler sağlar + + + + qt5-wayland-devel + qt5-wayland için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-webchannel/actions.py b/desktop/toolkit/qt6/qt6-webchannel/actions.py new file mode 100755 index 0000000000..acd719b138 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webchannel/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + # qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + #for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + #pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-webchannel/pspec.xml b/desktop/toolkit/qt6/qt6-webchannel/pspec.xml new file mode 100755 index 0000000000..8fb1da5f5a --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webchannel/pspec.xml @@ -0,0 +1,60 @@ + + + + + qt6-webchannel + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Provides access to QObject or QML objects from HTML clients for seamless integration of Qt applications with HTML/JavaScript clients + Provides access to QObject or QML objects from HTML clients for seamless integration of Qt applications with HTML/JavaScript clients + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebchannel-everywhere-src-6.4.0.tar.xz + + qt6-sql-sqlite + qt6-base-devel + + qt6-declarative-devel + + + + + qt6-webchannel + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + libgcc + qt6-base + qt6-declarative + + + + + qt6-webchannel-devel + + /usr/lib/pkgconfig + /usr/include/qt6 + + + qt6-webchannel + qt6-base-devel + qt6-declarative-devel + + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-webchannel/translations.xml b/desktop/toolkit/qt6/qt6-webchannel/translations.xml new file mode 100755 index 0000000000..43e7abc1d2 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webchannel/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-webchannel + HTML/JavaScript istemcileri ile Qt uygulamalarının tam uyumu için HTML istemcilerinden QML veya QObject nesnelerine erişim sağlar + HTML/JavaScript istemcileri ile Qt uygulamalarının tam uyumu için HTML istemcilerinden QML veya QObject nesnelerine erişim sağlar + + + + qt5-webchannel-devel + qt5-webchannel için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-webengine/actions.py b/desktop/toolkit/qt6/qt6-webengine/actions.py new file mode 100755 index 0000000000..40a9ce3167 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webengine/actions.py @@ -0,0 +1,79 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + # shelltools.system("mkdir .git") + # pisitools.dosed(".qmake.conf", "5.15.10", "5.15.5") + + #shelltools.unlinkDir("src/3rdparty") + #shelltools.move("../qtwebengine-chromium-*", "src/3rdparty") + #shelltools.system("mkdir src/3rdparty/chromium/.git") + #shelltools.system("patch -p1 < qtwebengine-5.15.7-build_fixes-1.patch") + # shelltools.system("patch -p1 < qtwebengine-everywhere-src-5.15.5-TRUE.patch") + + # shelltools.system("sed -i 's/NINJAJOBS/NINJA_JOBS/' src/core/gn_run.pro") + + #shelltools.copy("qtwebengine-release.sh", "%s/qtwebengine-release.sh" % get.workDIR()) + #shelltools.cd("%s" % get.workDIR()) + + #shelltools.system("sh ./qtwebengine-release.sh") + + #shelltools.cd("qtwebengine-everywhere-opensource-src-%s" % get.srcVERSION()) + + + + # Disable jumbo build https://bugreports.qt.io/browse/QTBUG-88657 gcc10 + # shelltools.system("sed -i 's|use_jumbo_build=true|use_jumbo_build=false|' -i src/buildtools/config/common.pri") + + #shelltools.system("sh ./qtwebengine-release.sh") + #shelltools.system("git submodule init") + #shelltools.system("git submodule update") + + # shelltools.makedirs("build") + # shelltools.cd("build") + #shelltools.export("QT5LINK", "/usr/lib/qt6/bin") + #shelltools.export("QT5DIR", "/usr/lib/qt6") + #shelltools.export("CFLAGS", "%s -I/usr/lib/sqlite3.16.2" % get.CFLAGS()) + #shelltools.system("qmake WEBENGINE_CONFIG+=use_proprietary_codecs WEBENGINE_CONFIG+=use_system_icu WEBENGINE_CONFIG+=use_system_protobuf WEBENGINE_CONFIG+=use_system_ffmpeg qtwebengine.pro") + #pisitools.ldflags.add("-Wl,--no-keep-memory ") + #shelltools.export("NINJAJOBS", "-j 4") + # shelltools.system("qmake .. -- -proprietary-codecs \ + # -system-ffmpeg \ + # -system-webp \ + # -system-opus \ + # -spellchecker \ + # -webengine-icu \ + # -webengine-kerberos \ + # -webengine-webrtc-pipewire") + + qt6.configure(" -DCMAKE_TOOLCHAIN_FILE=/usr/lib/cmake/Qt6/qt.toolchain.cmake \ + -DQT_FEATURE_webengine_system_ffmpeg=ON \ + -DQT_FEATURE_webengine_system_icu=OFF \ + -DQT_FEATURE_webengine_system_libevent=ON \ + -DQT_FEATURE_webengine_proprietary_codecs=ON \ + -DQT_FEATURE_webengine_kerberos=ON \ + -DQT_FEATURE_webengine_webrtc_pipewire=ON") + +def build(): + # shelltools.cd("build") + qt6.make() + +def install(): + # shelltools.cd("build") + qt6.install() + + #I hope qtchooser will manage this issue + #for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + #pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + # shelltools.cd("..") + pisitools.dodoc("LICENSES/**") diff --git a/desktop/toolkit/qt6/qt6-webengine/files/fedora/qtwebengine-everywhere-src-5.15.5-TRUE.patch b/desktop/toolkit/qt6/qt6-webengine/files/fedora/qtwebengine-everywhere-src-5.15.5-TRUE.patch new file mode 100644 index 0000000000..10a93246d9 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webengine/files/fedora/qtwebengine-everywhere-src-5.15.5-TRUE.patch @@ -0,0 +1,12 @@ +diff -up qtwebengine-everywhere-opensource-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c.TRUE qtwebengine-everywhere-opensource-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c +--- qtwebengine-everywhere-opensource-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c.TRUE 2021-05-28 07:05:45.000000000 -0500 ++++ qtwebengine-everywhere-opensource-src-5.15.5/src/3rdparty/chromium/third_party/libxml/src/encoding.c 2021-06-24 09:44:41.592468805 -0500 +@@ -2004,7 +2004,7 @@ xmlEncOutputChunk(xmlCharEncodingHandler + #ifdef LIBXML_ICU_ENABLED + else if (handler->uconv_out != NULL) { + ret = xmlUconvWrapper(handler->uconv_out, 0, out, outlen, in, inlen, +- TRUE); ++ 1); + } + #endif /* LIBXML_ICU_ENABLED */ + else { diff --git a/desktop/toolkit/qt6/qt6-webengine/files/fedora/qtwebengine-release.sh b/desktop/toolkit/qt6/qt6-webengine/files/fedora/qtwebengine-release.sh new file mode 100644 index 0000000000..a7b59e72fb --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webengine/files/fedora/qtwebengine-release.sh @@ -0,0 +1,16 @@ +#!/bin/sh +set -x +VERSION=5.15.5 +CHROMIUMHASH=`wget https://code.qt.io/cgit/qt/qtwebengine.git/tree/src/3rdparty?h=$VERSION -q --content-on-error -O - | grep "Bad object name: " | sed 's/^.*Bad object name: \([0-9a-f]\{40\}\).*$/\1/g'` +rm -rf qtwebengine-$VERSION qtwebengine-$VERSION.tar.gz qtwebengine-chromium-$CHROMIUMHASH qtwebengine-chromium-$CHROMIUMHASH.tar.gz qtwebengine-everywhere-opensource-src-$VERSION +wget https://github.com/qt/qtwebengine/archive/$VERSION.tar.gz -O qtwebengine-$VERSION.tar.gz || exit $? +tar xzf qtwebengine-$VERSION.tar.gz || exit $? +wget https://github.com/qt/qtwebengine-chromium/archive/$CHROMIUMHASH.tar.gz -O qtwebengine-chromium-$CHROMIUMHASH.tar.gz || exit $? +tar xzf qtwebengine-chromium-$CHROMIUMHASH.tar.gz || exit $? +mv qtwebengine-$VERSION qtwebengine-everywhere-opensource-src-$VERSION || exit $? +cd qtwebengine-everywhere-opensource-src-$VERSION ; syncqt.pl -version $VERSION || exit $? +rmdir ../qtwebengine-everywhere-opensource-src-$VERSION/src/3rdparty || exit $? +mv ../qtwebengine-chromium-$CHROMIUMHASH src/3rdparty || exit $? +# cd .. +# XZ_OPT=-9 tar cJf qtwebengine-everywhere-opensource-src-$VERSION.tar.xz qtwebengine-everywhere-opensource-src-$VERSION || exit $? +# rm -rf qtwebengine-$VERSION qtwebengine-$VERSION.tar.gz qtwebengine-chromium-$CHROMIUMHASH qtwebengine-chromium-$CHROMIUMHASH.tar.gz qtwebengine-everywhere-opensource-src-$VERSION diff --git a/desktop/toolkit/qt6/qt6-webengine/files/qtbug-107144.patch b/desktop/toolkit/qt6/qt6-webengine/files/qtbug-107144.patch new file mode 100644 index 0000000000..d7faa5a2b6 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webengine/files/qtbug-107144.patch @@ -0,0 +1,33 @@ +From 64b7da9dab82713fdcb2e03d8a2715421eae5685 Mon Sep 17 00:00:00 2001 +From: Martin Negyokru +Date: Mon, 3 Oct 2022 12:20:00 +0200 +Subject: Do not intercept websocket connection when there is no associated + frame + +This fix is based on chrome's implementation. + +Fixes: QTBUG-107144 +Pick-to: 6.4 +Change-Id: If042e4156b8a4bdb27a210c4db94e3a6198aed7d +Reviewed-by: Allan Sandfeld Jensen +--- + src/core/content_browser_client_qt.cpp | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp +index a1868715c..b6e6748c8 100644 +--- a/src/core/content_browser_client_qt.cpp ++++ b/src/core/content_browser_client_qt.cpp +@@ -1245,8 +1245,7 @@ ContentBrowserClientQt::WillCreateURLLoaderRequestInterceptors(content::Navigati + + bool ContentBrowserClientQt::WillInterceptWebSocket(content::RenderFrameHost *frame) + { +- Q_UNUSED(frame); +- return true; // It is probably not worth it to only intercept when interceptors are installed ++ return frame != nullptr; + } + + QWebEngineUrlRequestInterceptor *getProfileInterceptorFromFrame(content::RenderFrameHost *frame) +-- +cgit v1.2.1 + diff --git a/desktop/toolkit/qt6/qt6-webengine/pspec.xml b/desktop/toolkit/qt6/qt6-webengine/pspec.xml new file mode 100755 index 0000000000..6a3744c221 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webengine/pspec.xml @@ -0,0 +1,380 @@ + + + + + qt6-webengine + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Provides support for web applications using the Chromium browser project + Provides support for web applications using the Chromium browser project + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebengine-everywhere-src-6.4.0.tar.xz + + qt6-base-devel + qt6-declarative-devel + + qt6-positioning-devel + qt6-sensors-devel + qt6-webchannel-devel + qt6-designer-devel + bison + wget + nodejs + re2-devel + re2c + ninja + gperf + snappy-devel + gobject-introspection-devel + expat-devel + glib2-devel + fontconfig-devel + freetype-devel + mesa-devel + eudev-devel + libpng-devel + webp-devel + harfbuzz-devel + json-c-devel + protobuf-devel + libdrm-devel + libopus-devel + libevent-devel + zlib-devel + libxml2-devel + libxslt-devel + libX11-devel + libXi-devel + libXcursor-devel + libXext-devel + libXfixes-devel + libXrender-devel + libXdamage-devel + libXcomposite-devel + libXtst-devel + libXrandr-devel + libXScrnSaver-devel + libcap-devel + pulseaudio-libs-devel + alsa-lib-devel + pciutils-devel + dbus-devel + nss-devel + perl + python-devel + python3-devel + libvpx-devel + libjpeg-turbo-devel + x264-devel + minizip-devel + icu4c-devel + ffmpeg-devel + git + lcms2-devel + jsoncpp-devel + poppler-cpp-devel + python-Jinja2 + libxkbcommon-devel + libxkbfile-devel + pipewire-0.2-devel + mit-kerberos-devel + python3-html5lib + + + qtbug-107144.patch + + + + + qt6-webengine + + /usr/lib/qt6/bin/ + /usr/bin + /usr/lib/metatypes/* + /usr/lib/libQt6Pdf* + /usr/lib/libQt6WebEngine* + /usr/lib/libQt6WebEngineWidgets* + /usr/lib/qt6 + /usr/share/qt6 + /usr/share/qt6/translations + /usr/share/doc + + + re2 + nss + dbus + nspr + webp + expat + mesa + icu4c + lcms2 + ffmpeg + libxcb + glib2 + libX11 + libgcc + libpng + snappy + freetype + libXi + libXext + libXtst + libxslt + libopus + libxml2 + libvpx + qt6-base + alsa-lib + harfbuzz + libevent + libXfixes + libXrandr + fontconfig + libXcursor + libXScrnSaver + libXdamage + libXrender + qt6-positioning + libXcomposite + libjpeg-turbo + qt6-webchannel + qt6-declarative + zlib + minizip + protobuf + pulseaudio-libs + libxkbcommon + libxkbfile + pipewire-0.2 + + + + + qt6-webengine-devel + + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/include/qt6 + + + qt6-webengine + qt6-base-devel + qt6-declarative-devel + qt6-positioning-devel + qt6-webchannel-devel + + + + + + + + 2022-10-07 + 6.4.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2022-07-05 + 5.15.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2022-04-18 + 5.15.3 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2021-12-01 + 5.15.7 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2021-07-08 + 5.15.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2021-02-27 + 5.15.2 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-12-14 + 5.15.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-10-01 + 5.15.1 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-09-09 + 5.15.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-05-30 + 5.14.2 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-04-04 + 5.14.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-02-27 + 5.14.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-12-22 + 5.14.0 + Version bump + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-11-04 + 5.13.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-09-26 + 5.13.1 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-09-05 + 5.13.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-06-20 + 5.13.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-03-14 + 5.12.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-02-01 + 5.12.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-12-05 + 5.12.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-10-15 + 5.11.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-09-22 + 5.10.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-05-02 + 5.9.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-04-27 + 5.9.3 + Release bump + Kamil Atlı + suvari@pisilinux.org + + + 2018-03-01 + 5.9.3 + Release bump + Kamil Atlı + suvari@pisilinux.org + + + 2017-03-08 + 5.7.1 + Release bump. + Kamil Atlı + suvari@pisilinux.org + + + 2016-12-27 + 5.6.2 + Version bump + PisiLinux Community + admins@pisilinux.org + + + 2016-06-15 + 5.6.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-webengine/translations.xml b/desktop/toolkit/qt6/qt6-webengine/translations.xml new file mode 100755 index 0000000000..680b4ac782 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webengine/translations.xml @@ -0,0 +1,8 @@ + + + + qt5-webengine + Chromium tarayıcı projelerini kullanan web uygulamaları için destek sağlar + Chromium tarayıcı projelerini kullanan web uygulamaları için destek sağlar + + diff --git a/desktop/toolkit/qt6/qt6-websockets/actions.py b/desktop/toolkit/qt6/qt6-websockets/actions.py new file mode 100755 index 0000000000..acd719b138 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-websockets/actions.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import shelltools +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 +from pisi.actionsapi import get + +def setup(): + qt6.configure() + +def build(): + qt6.make() + # qt6.make("docs") + +def install(): + qt6.install() + + #I hope qtchooser will manage this issue + #for bin in shelltools.ls("%s/usr/lib/qt6/bin" % get.installDIR()): + #pisitools.dosym("/usr/lib/qt6/bin/%s" % bin, "/usr/bin/%s-qt6" % bin) + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-websockets/pspec.xml b/desktop/toolkit/qt6/qt6-websockets/pspec.xml new file mode 100755 index 0000000000..aa8b08bcf0 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-websockets/pspec.xml @@ -0,0 +1,69 @@ + + + + + qt6-websockets + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + Provides WebSocket communication compliant with RFC 6455 + Provides WebSocket communication compliant with RFC 6455 + LGPLv2.1-linking-exception + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebsockets-everywhere-src-6.4.0.tar.xz + + qt6-sql-sqlite + qt6-base-devel + + qt6-declarative-devel + + + + + qt6-websockets + + /usr/lib + /usr/lib/qt6 + /usr/share/doc/ + /usr/share/qt6/modules/WebSockets.json + + + libgcc + qt6-base + qt6-declarative + + + + + qt6-websockets-devel + + /usr/lib/pkgconfig + /usr/include/qt6 + + + qt6-websockets + qt6-base-devel + + + + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + diff --git a/desktop/toolkit/qt6/qt6-websockets/translations.xml b/desktop/toolkit/qt6/qt6-websockets/translations.xml new file mode 100755 index 0000000000..6bb86b48b4 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-websockets/translations.xml @@ -0,0 +1,13 @@ + + + + qt5-websockets + RFC 6455 ile yumuşak WebSocket iletişimi sağlar + RFC 6455 ile yumuşak WebSocket iletişimi sağlar + + + + qt5-websockets-devel + qt5-websockets için geliştirme dosyaları + + diff --git a/desktop/toolkit/qt6/qt6-webview/actions.py b/desktop/toolkit/qt6/qt6-webview/actions.py new file mode 100644 index 0000000000..ac8c6e4bc5 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webview/actions.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import pisitools +from pisi.actionsapi import qt6 + +def setup(): + qt6.configure() + +def build(): + qt6.make() + +def install(): + qt6.install() + + pisitools.dodoc("LICENSES/*") diff --git a/desktop/toolkit/qt6/qt6-webview/pspec.xml b/desktop/toolkit/qt6/qt6-webview/pspec.xml new file mode 100644 index 0000000000..88dbdb362b --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webview/pspec.xml @@ -0,0 +1,71 @@ + + + + + qt6-webview + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + FDL, GPL3 + library + Provides a way to display web content in a QML application + qt6-webview + Provides a way to display web content in a QML application + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebview-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-webengine-devel + qt6-declarative-devel + + + + + + qt6-webview + + qt6-base + qt6-webengine + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules + + + + + qt6-webview-devel + Development files for qt6-webview + + qt6-webview + qt6-base-devel + qt6-declarative-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/desktop/toolkit/qt6/qt6-webview/translations.xml b/desktop/toolkit/qt6/qt6-webview/translations.xml new file mode 100644 index 0000000000..c2d06cb529 --- /dev/null +++ b/desktop/toolkit/qt6/qt6-webview/translations.xml @@ -0,0 +1,8 @@ + + + + qt6-webview + Provides a way to display web content in a QML application + Provides a way to display web content in a QML application + + diff --git a/pisi-index.xml b/pisi-index.xml index 544cdd6e42..956d86f81e 100644 --- a/pisi-index.xml +++ b/pisi-index.xml @@ -8470,7 +8470,7 @@ Thunderbird, Mozilla e-posta bileşeninin yeniden tasarlanmış halidir. Platform bağımsız olan Thunderbird, XUL kullanıcı arayüzü diliyle geliştirilmiştir. Thunderbird to darmowy i rozszerzalny klient poczty z wieloma wspaniałymi funkcjami. thunderbird - http://ftp.mozilla.org/pub/thunderbird/releases/91.12.0/source/thunderbird-91.12.0.source.tar.xz + http://ftp.mozilla.org/pub/thunderbird/releases/102.3.1/source/thunderbird-102.3.1.source.tar.xz pisilinux/mozconfig @@ -8579,7 +8579,7 @@ system.locale lang-be - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-be@thunderbird.mozilla.org.xpi @@ -8592,7 +8592,7 @@ system.locale lang-ca - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-ca@thunderbird.mozilla.org.xpi @@ -8605,7 +8605,7 @@ system.locale lang-da - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-da@thunderbird.mozilla.org.xpi @@ -8618,7 +8618,7 @@ system.locale lang-de - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-de@thunderbird.mozilla.org.xpi @@ -8631,7 +8631,7 @@ system.locale lang-el - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-el@thunderbird.mozilla.org.xpi @@ -8644,7 +8644,7 @@ system.locale lang-en-US - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-en-US@thunderbird.mozilla.org.xpi @@ -8657,7 +8657,7 @@ system.locale lang-en-GB - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-en-GB@thunderbird.mozilla.org.xpi @@ -8670,7 +8670,7 @@ system.locale lang-es-AR - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-es-AR@thunderbird.mozilla.org.xpi @@ -8683,7 +8683,7 @@ system.locale lang-es-ES - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-es-ES@thunderbird.mozilla.org.xpi @@ -8696,7 +8696,7 @@ system.locale lang-fi - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-fi@thunderbird.mozilla.org.xpi @@ -8709,7 +8709,7 @@ system.locale lang-fr - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-fr@thunderbird.mozilla.org.xpi @@ -8722,7 +8722,7 @@ system.locale lang-hr - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-hr@thunderbird.mozilla.org.xpi @@ -8735,7 +8735,7 @@ system.locale lang-hu - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-hu@thunderbird.mozilla.org.xpi @@ -8748,7 +8748,7 @@ system.locale lang-it - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-it@thunderbird.mozilla.org.xpi @@ -8761,7 +8761,7 @@ system.locale lang-lt - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-lt@thunderbird.mozilla.org.xpi @@ -8774,7 +8774,7 @@ system.locale lang-nl - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-nl@thunderbird.mozilla.org.xpi @@ -8787,7 +8787,7 @@ system.locale lang-pl - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-pl@thunderbird.mozilla.org.xpi @@ -8800,7 +8800,7 @@ system.locale lang-pt-BR - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-pt-BR@thunderbird.mozilla.org.xpi @@ -8813,7 +8813,7 @@ system.locale lang-pt-PT - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-pt-PT@thunderbird.mozilla.org.xpi @@ -8826,7 +8826,7 @@ system.locale lang-ro - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-ro@thunderbird.mozilla.org.xpi @@ -8839,7 +8839,7 @@ system.locale lang-ru - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-ru@thunderbird.mozilla.org.xpi @@ -8852,7 +8852,7 @@ system.locale lang-sr - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-sr@thunderbird.mozilla.org.xpi @@ -8865,7 +8865,7 @@ system.locale lang-sv-SE - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-sv-SE@thunderbird.mozilla.org.xpi @@ -8878,7 +8878,7 @@ system.locale lang-tr - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-tr@thunderbird.mozilla.org.xpi @@ -8891,13 +8891,20 @@ system.locale lang-uk - thunderbird + thunderbird /usr/lib/thunderbird/extensions/langpack-uk@thunderbird.mozilla.org.xpi + + 2022-10-03 + 102.3.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + 2022-08-13 91.12.0 @@ -44433,7 +44440,7 @@ Gnome session. Network Security Services (NSS) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards. NSS, platform bağımsız güvenli ağ servisi geliştirme kitaplıklarından oluşur. Bu kitaplık yardımı ile SSL v2 ve v3, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 sertifikaları ve diğer bir çok güvenlik standardına uygun güvenli sunucu-istemci yazılımları geliştirilebilir. Network Security Services (NSS) es un conjunto de librerías para desarrollo cross-plataforma de aplicaciones cliente-servidor con facilidad de seguridad. Aplicaciones usando NSS pueden soportar certificados SSL v2 y v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3, y otros estándares de seguridad. - https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_82_RTM/src/nss-3.82.tar.gz + https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_83_RTM/src/nss-3.83.tar.gz nss.pc.in nss-config.in @@ -44476,16 +44483,23 @@ Gnome session. nss için geliştirme dosyaları nspr-devel - nss + nss /usr/bin/nss-config /usr/include /usr/lib/pkgconfig - /usr/lib/nss/*.a + /usr/lib/*.a + + 2022-10-08 + 3.83 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + 2022-08-24 3.82 @@ -63942,7 +63956,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression multimedia.graphics A JavaScript 3D rendering API for Qt Quick APIs are provided for C and C++. There are various bindings to other languages (C#, Java, Python, Delphi, D). Assimp also runs on Android and iOS. - https://github.com/assimp/assimp/archive/v5.0.1.tar.gz + https://github.com/assimp/assimp/archive/v5.2.5.tar.gz ninja boost-devel @@ -63953,9 +63967,6 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression minizip-devel git - - assimp-3.3.1-install-pkgconfig.patch - multimedia/graphics/assimp/pspec.xml @@ -63977,7 +63988,7 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression Development files for assimp boost-devel - assimp + assimp /usr/include @@ -63986,6 +63997,13 @@ uses SIMD instructions (MMX, SSE2, etc.) to accelerate baseline JPEG compression + + 2022-10-06 + 5.2.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + 2021-01-03 5.0.1 @@ -254692,6 +254710,2780 @@ components such as the Settings and gnome-shell. + + + qt6-quick3dphysics + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + desktop.toolkit.qt6 + Physics engine integration for Qt Quick 3D + Physics engine integration for Qt Quick 3D + Physics engine integration for Qt Quick 3D + Physics engine integration for Qt Quick 3D + qt6-quick3dphysics + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtquick3dphysics-everywhere-src-6.4.0.tar.xz + desktop/toolkit/qt6/qt6-quick3dphysics/pspec.xml + + + qt6-quick3dphysics + + / + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-base + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + 'GPL3' 'LGPL3' 'FDL' 'custom' + desktop.toolkit.qt6 + Cross platform application and UI framework + Cross platform application and UI development framework + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtbase-everywhere-src-6.4.0.tar.xz + + ninja + cmake + zstd-devel + at-spi2-core-devel + cups-devel + dbus-devel + zlib-devel + glib2-devel + libpcre2-devel + desktop-file-utils + fontconfig-devel + gperf + gtk3-devel + harfbuzz-devel + icon-theme-hicolor + leveldb-devel + firebird-superserver + libjpeg-turbo-devel + mariadb-lib + libxcb-devel + libXcomposite-devel + libxkbcommon-devel + libxslt-devel + mesa-devel + libmtdev-devel + nss-devel + pciutils-devel + postgresql-server + python-devel + DirectFB-devel + libinput-devel + sqlite-devel + xcb-proto + xcb-util-devel + xcb-util-image-devel + xcb-util-keysyms-devel + xcb-util-wm-devel + tiff-devel + libdrm-devel + libpng-devel + eudev-devel + libSM-devel + libICE-devel + libX11-devel + libXext-devel + firebird-devel + unixODBC-devel + libXrandr-devel + libXrender-devel + libXi-devel + xcb-util-renderutil-devel + openssl-devel + freetype-devel + pulseaudio-libs-devel + alsa-lib-devel + libproxy-devel + gst-plugins-base-devel + wayland-devel + wayland-protocols-devel + libXcursor-devel + tslib-devel + shared-mime-info + md4c-devel + libglvnd-devel + vulkan-headers + postgresql-pl + mit-kerberos-devel + double-conversion-devel + icu4c-devel + + + mkspecs.patch + qt6-base-nostrip.patch + fedora/qtbase-libglvnd.patch + fedora/qtbase-gcc11.patch + + desktop/toolkit/qt6/qt6-base/pspec.xml + + + qt6-base + + zstd + gtk3 + pango + libpcre2 + libgcc + cups + dbus + tslib + mesa + zlib + brotli + glib2 + icu4c + libSM + firebird-client + libproxy + libXi + libICE + libX11 + libdrm + libpng + libxcb + eudev + DirectFB + openssl + freetype + harfbuzz + libinput + libmtdev + fontconfig + gdk-pixbuf + libXrender + xcb-util-wm + libxkbcommon + libjpeg-turbo + xcb-util-image + xcb-util-keysyms + double-conversion + xcb-util-renderutil + md4c + mit-kerberos + libglvnd + + + /usr/lib + /usr/lib/qt6/imports + /usr/lib/qt6/qml + /usr/lib/qt6/plugins + /usr/share/qt6/translations + /usr/lib/qt6/bin + /usr/bin + /usr/share/doc + /usr/lib/qt6/mkspecs + /usr/share/qt6/modules + + + + qt6-base-devel + Development files for Qt 5 + Development files for Qt 5 + + qt6-base + libglvnd-devel + vulkan-headers + libxkbcommon-devel + + + /usr/include + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/lib/*.prl + + + + qt6-sql-mysql + + qt6-base + libgcc + mariadb-lib + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlmysql.so + + + + qt6-sql-postgresql + + qt6-base + libgcc + postgresql-lib + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlpsql.so + + + + qt6-sql-sqlite + + qt6-base + libgcc + sqlite + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlite.so + + + + qt6-sql-odbc + + qt6-base + libgcc + unixODBC + + + /usr/lib/qt6/plugins/sqldrivers/libqsqlodbc.so + + + + + 2022-10-03 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-quicktimeline + http://qt-project.org/ + + Pisi Linux Admins + admin@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop + Qt module for keyframe-based timeline construction + Qt module for keyframe-based timeline construction + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtquicktimeline-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-quicktimeline/pspec.xml + + + qt6-quicktimeline + Qt module for keyframe-based timeline construction + + qt6-base + qt6-declarative + libgcc + + + /usr/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules/QuickTimeline.json + + + + qt6-quicktimeline-devel + Development files for qt6-quicktimeline + + qt6-base-devel + qt6-declarative-devel + qt6-quicktimeline + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-networkauth + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + 'GPL3' 'LGPL3' 'FDL' 'custom' + app:gui + desktop.toolkit.qt6 + Network authentication module + Ağ kimlik doğrulama modülü + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtnetworkauth-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + + desktop/toolkit/qt6/qt6-networkauth/pspec.xml + + + qt6-networkauth + + qt6-base + + + /usr/lib + /usr/share + + + + qt6-networkauth-devel + Development files for qt6-networkauth + + qt6-networkauth + qt6-base-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-positioning + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + desktop.toolkit.qt6 + Provides access to position, satellite and area monitoring classes + Provides access to position, satellite and area monitoring classes + Provides access to position, satellite and area monitoring classes + Provides access to position, satellite and area monitoring classes + qt6-positioning + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtpositioning-everywhere-src-6.4.0.tar.xz + + ninja + cmake + gconf-devel + glib2-devel + gypsy-devel + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-positioning/pspec.xml + + + qt6-positioning + + gconf + glib2 + gypsy + qt6-base + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules/ + + + + qt6-positioning-devel + Development files for qt6-positioning + + qt6-positioning + qt6-base-devel + qt6-declarative-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-httpserver + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + desktop.toolkit.qt6 + Qt HTTP Server + Qt HTTP Server + Qt HTTP Server + Qt HTTP Server + qt6-httpserver + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qthttpserver-everywhere-src-6.4.0.tar.xz + + cmake + ninja + qt6-base-devel + qt6-websockets-devel + + desktop/toolkit/qt6/qt6-httpserver/pspec.xml + + + qt6-httpserver + + qt6-base + qt6-websockets + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules/ + + + + qt6-httpserver-devel + Development files for qt6-httpserver + + qt6-httpserver + qt6-base-devel + qt6-websockets-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-imageformats + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Plugins for additional image formats: TIFF, MNG, TGA, WBMP + Plugins for additional image formats: TIFF, MNG, TGA, WBMP + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtimageformats-everywhere-src-6.4.0.tar.xz + + cmake + libxkbcommon-devel + vulkan-headers + jasper-devel + libmng-devel + zlib-devel + tiff-devel + webp-devel + libjpeg-turbo-devel + qt6-base-devel + qt6-sql-sqlite + + desktop/toolkit/qt6/qt6-imageformats/pspec.xml + + + qt6-imageformats + + qt6-base + libgcc + tiff + webp + jasper + + + /usr/lib + /usr/lib/qt6 + /usr/share/licenses + /usr/share/doc + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-virtualkeyboard + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + GPL3 + desktop.toolkit.qt6 + Qt module for general purpose serial bus access + Virtual keyboard framework + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtvirtualkeyboard-everywhere-src-6.4.0.tar.xz + + libxcb-devel + hunspell-devel + qt6-svg-devel + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-virtualkeyboard/pspec.xml + + + qt6-virtualkeyboard + Virtual keyboard framework + + qt6-svg + qt6-base + qt6-declarative + libgcc + libxcb + hunspell + + + /usr/lib + /usr/lib/qt6 + /usr/share/qt6 + /usr/share/doc + + + + qt6-virtualkeyboard-devel + Development headers for qt6-virtualkeyboard + + qt6-virtualkeyboard + + + /usr/include/qt6 + /usr/lib/pkgconfig + /usr/lib/cmake + + + + + 2022-10-07 + 6.4.0 + First Release. + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-quick3d + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop + Experimental module providing APIs and a host tool to host tool to perform graphics and compute shader conditioning for the upcoming Qt graphics abstraction layer + Experimental module providing APIs and a host tool to host tool to perform graphics and compute shader conditioning for the upcoming Qt graphics abstraction layer + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtquick3d-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + qt6-declarative-devel + qt6-shadertools-devel + assimp-devel + + + qtquick3d-fix-build-with-gcc11.patch + + desktop/toolkit/qt6/qt6-quick3d/pspec.xml + + + qt6-quick3d + Experimental module providing APIs and a host tool to host tool to perform graphics and compute shader conditioning for the upcoming Qt graphics abstraction layer + + qt6-base + qt6-shadertools + qt6-declarative + libgcc + assimp + + + /usr/bin + /usr/lib/qt6/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + + + + qt6-quick3d-devel + Development files for qt6-quick3d + + qt6-base-devel + qt6-declarative-devel + qt6-quick3d + qt6-shadertools-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-webchannel + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Provides access to QObject or QML objects from HTML clients for seamless integration of Qt applications with HTML/JavaScript clients + Provides access to QObject or QML objects from HTML clients for seamless integration of Qt applications with HTML/JavaScript clients + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebchannel-everywhere-src-6.4.0.tar.xz + + qt6-sql-sqlite + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-webchannel/pspec.xml + + + qt6-webchannel + + libgcc + qt6-base + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-webchannel-devel + + qt6-webchannel + qt6-base-devel + qt6-declarative-devel + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-serialbus + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop.toolkit.qt6 + Qt module for general purpose serial bus access + Qt module for general purpose serial bus access + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtserialbus-everywhere-src-6.4.0.tar.xz + + cmake + ninja + qt6-base-devel + qt6-serialport-devel + + desktop/toolkit/qt6/qt6-serialbus/pspec.xml + + + qt6-serialbus + Qt module for general purpose serial bus access + + qt6-base + qt6-serialport + + + /usr/bin + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-serialbus-devel + Development files for qt6-serialbus + + qt6-serialbus + qt6-base-devel + qt6-serialport-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-languageserver + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + FDL, GPL3 + library + desktop.toolkit.qt6 + An implementation of the Language Server Protocol + An implementation of the Language Server Protocol + An implementation of the Language Server Protocol + An implementation of the Language Server Protocol + qt6-languageserver + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtlanguageserver-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + + desktop/toolkit/qt6/qt6-languageserver/pspec.xml + + + qt6-languageserver + + qt6-base-devel + + + /usr/lib + /usr/share + /usr/share/doc + + + + qt6-languageserver-devel + Development files for qt6-languageserver + + qt6-languageserver + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-06 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-serialport + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Provides access to hardware and virtual serial ports + Provides access to hardware and virtual serial ports + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtserialport-everywhere-src-6.4.0.tar.xz + + ninja + cmake + eudev-devel + qt6-base-devel + qt6-assistant-devel + qt6-sql-sqlite + + desktop/toolkit/qt6/qt6-serialport/pspec.xml + + + qt6-serialport + + qt6-base + eudev + libgcc + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-serialport-devel + + qt6-base-devel + qt6-serialport + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-translations + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + A cross-platform application and UI framework (Translations) + A cross-platform application and UI framework (Translations) + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qttranslations-everywhere-src-6.4.0.tar.xz + + qt6-base-devel + qt6-assistant-devel + qt6-sql-sqlite + qt6-linguist + + desktop/toolkit/qt6/qt6-translations/pspec.xml + + + qt6-translations + + qt6-base + + + /usr/share/qt6 + /usr/share/doc/ + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-datavis3d + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + GPL3 + desktop + Provides a set of easy to use chart components + Qt Data Visualization module + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtdatavis3d-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-datavis3d/pspec.xml + + + qt6-datavis3d + Qt Data Visualization module + + qt6-base + qt6-declarative + libgcc + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-datavis3d-devel + Development files for qt6-datavis3d + + qt6-base-devel + qt6-declarative-devel + qt6-datavis3d + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-wayland + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Provides APIs for Wayland + Provides APIs for Wayland + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwayland-everywhere-src-6.4.0.tar.xz + + cmake + ninja + wayland-devel + vulkan-headers + libxkbcommon-devel + libXcomposite-devel + xorg-xwayland-devel + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-wayland/pspec.xml + + + qt6-wayland + + libX11 + libgcc + libglvnd + wayland + wayland-client + wayland-cursor + libxkbcommon + libXcomposite + wayland-server + qt6-base + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/lib/qt6/bin + /usr/bin + /usr/share/doc + /usr/share/qt6/modules/* + + + + qt6-wayland-devel + + qt6-wayland + qt6-base-devel + qt6-declarative-devel + + + /usr/lib/pkgconfig + /usr/include + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-webengine + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Provides support for web applications using the Chromium browser project + Provides support for web applications using the Chromium browser project + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebengine-everywhere-src-6.4.0.tar.xz + + qt6-base-devel + qt6-declarative-devel + qt6-positioning-devel + qt6-sensors-devel + qt6-webchannel-devel + qt6-designer-devel + bison + wget + nodejs + re2-devel + re2c + ninja + gperf + snappy-devel + gobject-introspection-devel + expat-devel + glib2-devel + fontconfig-devel + freetype-devel + mesa-devel + eudev-devel + libpng-devel + webp-devel + harfbuzz-devel + json-c-devel + protobuf-devel + libdrm-devel + libopus-devel + libevent-devel + zlib-devel + libxml2-devel + libxslt-devel + libX11-devel + libXi-devel + libXcursor-devel + libXext-devel + libXfixes-devel + libXrender-devel + libXdamage-devel + libXcomposite-devel + libXtst-devel + libXrandr-devel + libXScrnSaver-devel + libcap-devel + pulseaudio-libs-devel + alsa-lib-devel + pciutils-devel + dbus-devel + nss-devel + perl + python-devel + python3-devel + libvpx-devel + libjpeg-turbo-devel + x264-devel + minizip-devel + icu4c-devel + ffmpeg-devel + git + lcms2-devel + jsoncpp-devel + poppler-cpp-devel + python-Jinja2 + libxkbcommon-devel + libxkbfile-devel + pipewire-0.2-devel + mit-kerberos-devel + python3-html5lib + + + qtbug-107144.patch + + desktop/toolkit/qt6/qt6-webengine/pspec.xml + + + qt6-webengine + + re2 + nss + dbus + nspr + webp + expat + mesa + icu4c + lcms2 + ffmpeg + libxcb + glib2 + libX11 + libgcc + libpng + snappy + freetype + libXi + libXext + libXtst + libxslt + libopus + libxml2 + libvpx + qt6-base + alsa-lib + harfbuzz + libevent + libXfixes + libXrandr + fontconfig + libXcursor + libXScrnSaver + libXdamage + libXrender + qt6-positioning + libXcomposite + libjpeg-turbo + qt6-webchannel + qt6-declarative + zlib + minizip + protobuf + pulseaudio-libs + libxkbcommon + libxkbfile + pipewire-0.2 + + + /usr/lib/qt6/bin/ + /usr/bin + /usr/lib/metatypes/* + /usr/lib/libQt6Pdf* + /usr/lib/libQt6WebEngine* + /usr/lib/libQt6WebEngineWidgets* + /usr/lib/qt6 + /usr/share/qt6 + /usr/share/qt6/translations + /usr/share/doc + + + + qt6-webengine-devel + + qt6-webengine + qt6-base-devel + qt6-declarative-devel + qt6-positioning-devel + qt6-webchannel-devel + + + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/include/qt6 + + + + + 2022-10-07 + 6.4.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2022-07-05 + 5.15.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2022-04-18 + 5.15.3 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2021-12-01 + 5.15.7 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2021-07-08 + 5.15.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2021-02-27 + 5.15.2 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-12-14 + 5.15.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-10-01 + 5.15.1 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-09-09 + 5.15.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-05-30 + 5.14.2 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-04-04 + 5.14.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2020-02-27 + 5.14.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-12-22 + 5.14.0 + Version bump + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-11-04 + 5.13.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-09-26 + 5.13.1 + Rebuild. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-09-05 + 5.13.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-06-20 + 5.13.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-03-14 + 5.12.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2019-02-01 + 5.12.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-12-05 + 5.12.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-10-15 + 5.11.2 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-09-22 + 5.10.1 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-05-02 + 5.9.5 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2018-04-27 + 5.9.3 + Release bump + Kamil Atlı + suvari@pisilinux.org + + + 2018-03-01 + 5.9.3 + Release bump + Kamil Atlı + suvari@pisilinux.org + + + 2017-03-08 + 5.7.1 + Release bump. + Kamil Atlı + suvari@pisilinux.org + + + 2016-12-27 + 5.6.2 + Version bump + PisiLinux Community + admins@pisilinux.org + + + 2016-06-15 + 5.6.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-charts + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + GPL3 + desktop.toolkit.qt6 + Provides a set of easy to use chart components + Provides a set of easy to use chart components + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtcharts-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-charts/pspec.xml + + + qt6-charts + Provides a set of easy to use chart components + + qt6-base + qt6-declarative + libgcc + + + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-charts-devel + Development files for qt6-charts + + qt6-charts + qt6-base-devel + qt6-declarative-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-sensors + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Provides access to sensor hardware and motion gesture recognition + Provides access to sensor hardware and motion gesture recognition + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtsensors-everywhere-src-6.4.0.tar.xz + + qt6-sql-sqlite + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-sensors/pspec.xml + + + qt6-sensors + + libgcc + qt6-base + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-sensors-devel + + qt6-sensors + qt6-base-devel + qt6-declarative-devel + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-scxml + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop.toolkit.qt6 + Provides a set of easy to use chart components + Provides a set of easy to use chart components + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtscxml-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-scxml/pspec.xml + + + qt6-scxml + Provides a set of easy to use chart components + + qt6-base + qt6-declarative + libgcc + + + /usr/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-scxml-devel + Development files for qt6-scxml + + qt6-scxml + qt6-base-devel + qt6-declarative-devel + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-remoteobjects + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + desktop.toolkit.qt6 + Inter-process communication (IPC) module developed for Qt + Inter-process communication (IPC) module developed for Qt + Inter-process communication (IPC) module developed for Qt + Inter-process communication (IPC) module developed for Qt + qt6-remoteobjects + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtremoteobjects-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-remoteobjects/pspec.xml + + + qt6-remoteobjects + + qt6-base + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-remoteobjects-devel + Development files for qt6-remoteobjects + + qt6-remoteobjects + qt6-base-devel + qt6-declarative-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-shadertools + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + GPLv3 + library + desktop.toolkit.qt6 + Provides functionality for the shader pipeline that allows Qt Quick to operate on Vulkan, Metal, and Direct3D, in addition to OpenGL + Provides functionality for the shader pipeline that allows Qt Quick to operate on Vulkan, Metal, and Direct3D, in addition to OpenGL + OpenGL'ye ek olarak Qt Quick'in Vulkan, Metal ve Direct3D üzerinde çalışmasına izin veren gölgelendirici ardışık düzeni için işlevsellik sağlar + OpenGL'ye ek olarak Qt Quick'in Vulkan, Metal ve Direct3D üzerinde çalışmasına izin veren gölgelendirici ardışık düzeni için işlevsellik sağlar + qt6-shadertools + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtshadertools-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + + desktop/toolkit/qt6/qt6-shadertools/pspec.xml + + + qt6-shadertools + + qt6-base + + + /usr/bin + /usr/lib/qt6/bin + /usr/lib + /usr/share + /usr/lib/metatypes + /usr/lib/qt6/mkspecs + /usr/share/qt6/modules + /usr/share/doc + + + + qt6-shadertools-devel + Development files for qt6-shadertools + + qt6-shadertools + qt6-base-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-06 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-webview + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + FDL, GPL3 + library + desktop.toolkit.qt6 + Provides a way to display web content in a QML application + Provides a way to display web content in a QML application + Provides a way to display web content in a QML application + Provides a way to display web content in a QML application + qt6-webview + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebview-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-webengine-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-webview/pspec.xml + + + qt6-webview + + qt6-base + qt6-webengine + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-webview-devel + Development files for qt6-webview + + qt6-webview + qt6-base-devel + qt6-declarative-devel + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-svg + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Classes for displaying the contents of SVG files + Classes for displaying the contents of SVG files + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtsvg-everywhere-src-6.4.0.tar.xz + + ninja + cmake + libxkbcommon-devel + zlib-devel + vulkan-headers + qt6-base-devel + + desktop/toolkit/qt6/qt6-svg/pspec.xml + + + qt6-svg + + libgcc + qt6-base + zlib + + + /usr/lib + /usr/lib/qt6 + /usr/share/licenses/ + /usr/share/qt6/modules + /usr/share/doc + + + + qt6-svg-devel + Development files for qt6-svg + + qt6-base-devel + qt6-svg + + + /usr/include/qt6/ + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-speech + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop.toolkit.qt6 + Qt module to make text to speech and speech recognition easy + Qt module to make text to speech and speech recognition easy + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtspeech-everywhere-src-6.4.0.tar.xz + + ninja + cmake + flite-devel + speech-dispatcher-devel + qt6-base-devel + qt6-multimedia-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-speech/pspec.xml + + + qt6-speech + Qt module to make text to speech and speech recognition easy + + flite + libgcc + speech-dispatcher + qt6-base + qt6-multimedia + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-speech-devel + Development headers for qt6-speech + + qt6-speech + qt6-base-devel + + + /usr/lib/cmake + /usr/include + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + + + 2022-07-05 + 5.15.5 + First Release. + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-5compat + http://qt.digia.com/ + + Pisi Linux Admins + admin@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop.toolkit.qt6 + Module that contains unsupported Qt 5 APIs + Module that contains unsupported Qt 5 APIs + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qt5compat-everywhere-src-6.4.0.tar.xz + + ninja + cmake + icu4c-devel + qt6-base-devel + qt6-declarative-devel + qt6-shadertools-devel + + desktop/toolkit/qt6/qt6-5compat/pspec.xml + + + qt6-5compat + + icu4c + libgcc + qt6-base + qt6-declarative + qt6-shadertools + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/licenses + /usr/share/qt6/modules/Core5Compat.json + + + + qt6-5compat-devel + + qt6-5compat + qt6-base-devel + + + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/include/qt6 + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-3d + http://qt-project.org/ + + Stefan Gronewold + groni@pisilinux.org + + custom + FDL + GPL3 + LGPL3 + desktop + C++ and QML APIs for easy inclusion of 3D graphics + C++ and QML APIs for easy inclusion of 3D graphics + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qt3d-everywhere-src-6.4.0.tar.xz + + ninja + cmake + vulkan-headers + qt6-base-devel + qt6-declarative-devel + qt6-shadertools-devel + + desktop/toolkit/qt6/qt6-3d/pspec.xml + + + qt6-3d + C++ and QML APIs for easy inclusion of 3D graphics + + qt6-base + qt6-declarative + qt6-shadertools + libgcc + assimp + + + /usr/bin + /usr/lib/qt6 + /usr/lib + /usr/share/doc + /usr/share/qt6/modules/* + + + + qt6-3d-devel + Development files for qt6-3d + + qt6-base-devel + qt6-declarative-devel + qt6-3d + + + /usr/include/qt6 + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-tools + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + A cross-platform application and UI framework (Development Tools, QtHelp) + A cross-platform application and UI framework (Development Tools, QtHelp) + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qttools-everywhere-src-6.4.0.tar.xz + + ninja + cmake + llvm + libxkbcommon-devel + llvm-clang-devel + lld-devel + llvm-mlir + llvm-polly + qt6-base-devel + icon-theme-hicolor + vulkan-headers + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-tools/pspec.xml + + + qt6-assistant + + libgcc + llvm-libs + llvm-clang + qt6-base + qt6-declarative + + + /usr/bin/qdistancefieldgenerator-qt6 + /usr/bin/assistant-qt6 + /usr/bin/qhelpgenerator-qt6 + /usr/bin/qhelpconverter-qt6 + /usr/bin/qdoc-qt6 + /usr/bin/qtattributionsscanner-qt6 + /usr/lib/qt6/libexec/qtattributionsscanner + /usr/lib/qt6/bin/qdistancefieldgenerator + /usr/lib/qt6/bin/assistant + /usr/lib/qt6/bin/qhelpgenerator + /usr/lib/qt6/bin/qhelpconverter + /usr/lib/qt6/bin/qdoc + /usr/lib/qt6/bin/qtattributionsscanner + /usr/lib/qt6/libexec/qhelpgenerator + /usr/lib/cmake/Qt6Help + /usr/lib/libQt6Help* + /usr/lib/libQt6CLucene* + /usr/lib/metatypes/qt6help_relwithdebinfo_metatypes.json + /usr/lib/qt6/mkspecs/modules/qt_lib_clucene_private.pri + /usr/lib/qt6/mkspecs/modules/qt_lib_help* + /usr/share/applications/assistant6.desktop + /usr/share/qt6/translations/assistant_tr.qm + /usr/share/icons/hicolor/128x128/apps/assistant.png + /usr/share/icons/hicolor/32x32/apps/assistant.png + /usr/share/pixmaps/assistant6.png + /usr/lib/qt6/bin/qcollectiongenerator + /usr/bin/qcollectiongenerator + /usr/lib/cmake/Qt6DocTools/Qt6DocToolsConfig.cmake + /usr/lib/cmake/Qt6DocTools/Qt6DocToolsConfigVersion.cmake + /usr/lib/cmake/Qt6AttributionsScannerTools/Qt6AttributionsScannerToolsConfig.cmake + /usr/lib/cmake/Qt6AttributionsScannerTools/Qt6AttributionsScannerToolsConfigVersion.cmake + /usr/share/doc/qt6-tools/* + + + assistant.desktop + assistant.png + + + + qt6-assistant-devel + + qt6-base-devel + qt6-assistant + llvm-clang-devel + + + /usr/include/qt6/QtHelp + /usr/include/qt6/QtCLucene + /usr/lib/pkgconfig/Qt6Help.pc + /usr/lib/pkgconfig/Qt6CLucene.pc + + + + qt6-designer + + libgcc + qt6-base + qt6-declarative + + + /usr/bin/designer-qt6 + /usr/bin/qtdiag-qt6 + /usr/bin/qtpaths-qt6 + /usr/bin/pixeltool-qt6 + /usr/bin/qtplugininfo-qt6 + /usr/bin/qtdiag6-qt6 + /usr/lib/qt6/bin/designer + /usr/lib/qt6/bin/qtdiag + /usr/lib/qt6/bin/qtpaths + /usr/lib/qt6/bin/pixeltool + /usr/lib/qt6/bin/qtplugininfo + /usr/lib/qt6/bin/qtdiag6 + /usr/share/qt6/modules/UiPlugin.json + /usr/share/qt6/modules/UiTools.json + /usr/share/qt6/modules/Tools.json + /usr/share/qt6/modules/Help.json + /usr/share/qt6/modules/DesignerComponentsPrivate.json + /usr/lib/cmake/Qt6Tools/ + /usr/lib/cmake/Qt6ToolsTools/ + /usr/lib/cmake/Qt6/FindWrapLibClang.cmake + /usr/lib/cmake/Qt6BuildInternals/StandaloneTests/QtToolsTestsConfig.cmake + /usr/lib/cmake/Qt6DesignerComponentsPrivate/* + /usr/lib/cmake/Qt6Designer + /usr/lib/cmake/Qt6UiTools + /usr/lib/cmake/Qt6UiPlugin + /usr/lib/cmake/Qt6DesignerComponents/Qt6DesignerComponentsConfig.cmake + /usr/lib/cmake/Qt6DesignerComponents/Qt6DesignerComponentsConfigVersion.cmake + /usr/lib/qt6/plugins/designer + /usr/share/applications/designer6.desktop + /usr/share/qt6/translations/designer_tr.qm + /usr/share/icons/hicolor/128x128/apps/QtProject-designer.png + /usr/share/pixmaps/designer6.png + /usr/lib/libQt6Designer* + /usr/lib/libQt6UiPlugin.prl + /usr/lib/libQt6UiTools* + /usr/lib/libQt6Tools* + /usr/lib/qt6/mkspecs/modules/qt_lib_designer* + /usr/lib/qt6/mkspecs/modules/qt_lib_uitools* + /usr/lib/qt6/mkspecs/modules/qt_lib_uiplugin.pri + /usr/lib/qt6/mkspecs/modules/qt_lib_tools_private.pri + /usr/lib/metatypes/qt6designer* + /usr/lib/metatypes/qt6uitools* + /usr/share/qt6/modules/Designer.json + /usr/share/qt6/modules/DesignerComponents.json + + + designer.desktop + designer.png + + + + qt6-designer-devel + + qt6-base-devel + qt6-designer + + + /usr/include/qt6/QtTools/QtTools* + /usr/include/qt6/QtTools/qttools* + /usr/include/qt6/QtTools/6.4.0/QtTools/private/qttools-config_p.h + /usr/include/qt6/QtDesigner* + /usr/include/qt6/QtUiTools + /usr/include/qt6/QtUiPlugin + /usr/lib/pkgconfig/Qt6Designer* + /usr/lib/pkgconfig/Qt6UiTools.pc + /usr/lib/pkgconfig/Qt6UiPlugin.pc + + + + qt6-linguist + + qt6-base + libgcc + llvm-libs + llvm-clang + qt6-designer + qt6-declarative + + + /usr/bin/lrelease* + /usr/bin/linguist-qt6 + /usr/bin/lconvert-qt6 + /usr/bin/lupdate* + /usr/bin/lprodump-qt6 + /usr/lib/qt6/bin/lrelease* + /usr/lib/qt6/bin/linguist + /usr/lib/qt6/bin/lconvert + /usr/lib/qt6/bin/lupdate* + /usr/lib/qt6/bin/lprodump + /usr/lib/qt6/libexec/lupdate-pro + /usr/lib/qt6/libexec/lrelease-pro + /usr/lib/qt6/libexec/lprodump + /usr/lib/cmake/Qt6Linguist/ + /usr/lib/cmake/Qt6LinguistTools + /usr/share/applications/linguist6.desktop + /usr/share/icons/hicolor/128x128/apps/linguist.png + /usr/share/icons/hicolor/16x16/apps/linguist.png + /usr/share/icons/hicolor/32x32/apps/linguist.png + /usr/share/icons/hicolor/48x48/apps/linguist.png + /usr/share/icons/hicolor/64x64/apps/linguist.png + /usr/share/pixmaps/linguist6.png + /usr/share/qt6/phrasebooks + /usr/share/qt6/translations/linguist_tr.qm + /usr/lib/pkgconfig/Qt6Linguist.pc + /usr/share/qt6/modules/Linguist.json + /usr/lib/qt6/mkspecs/modules/qt_lib_linguist.pri + /usr/lib/qt6/mkspecs/modules/qt_lib_linguist_private.pri + + + linguist.desktop + linguist.png + + + + qt6-qdbusviewer + + libgcc + qt6-base + + + /usr/bin/qdbusviewer-qt6 + /usr/bin/qdbus-qt6 + /usr/lib/qt6/bin/qdbusviewer + /usr/lib/qt6/bin/qdbus + /usr/share/applications/qdbusviewer6.desktop + /usr/share/icons/hicolor/128x128/apps/qdbusviewer.png + /usr/share/icons/hicolor/32x32/apps/qdbusviewer.png + /usr/share/pixmaps/qdbusviewer6.png + + + qdbusviewer.desktop + assistant.png + + + + + 2022-10-06 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-doc + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + A cross-platform application and UI framework (Documentation) + A cross-platform application and UI framework (Documentation) + assistant5 + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtdoc-everywhere-src-6.4.0.tar.xz + + ninja + cmake + + desktop/toolkit/qt6/qt6-doc/pspec.xml + + + qt6-doc + + qt6-base + qt6-script + qt6-svg + qt6-xmlpatterns + qt6-assistant + qt6-declarative + + + /usr/share/doc + /usr/share/doc/qt6 + /usr/lib/qt6/mkspecs/ + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-declarative + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Classes for QML and JavaScript languages + Classes for QML and JavaScript languages + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtdeclarative-everywhere-src-6.4.0.tar.xz + + ninja + cmake + python3 + libxkbcommon-devel + mesa-devel + qt6-sql-sqlite + qt6-base-devel + qt6-languageserver-devel + + desktop/toolkit/qt6/qt6-declarative/pspec.xml + + + qt6-declarative + + libgcc + qt6-base + qt6-languageserver + libglvnd + + + /usr/lib + /usr/lib/qt6 + /usr/share/licenses + /usr/lib/qt6/bin + /usr/bin/ + /usr/share/qt6/modules + + + + qt6-declarative-devel + + qt6-base-devel + qt6-declarative + + + /usr/lib/pkgconfig + /usr/lib/cmake + /usr/include/qt6 + + + + + 2022-10-05 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-keychain + https://github.com/frankosterfeld/qtkeychain + + Stefan Gronewold + groni@pisilinux.org + + BSD + desktop.toolkit.qt6 + Provides support for secure credentials storage + Qt5-Keychain is a Qt API to store passwords and other secret data securely. How the data is stored depends on the platform + https://github.com/frankosterfeld/qtkeychain/archive/v0.13.2.tar.gz + + cmake + glib2-devel + qt6-assistant-devel + qt6-base-devel + qt6-designer-devel + qt6-linguist + + desktop/toolkit/qt6/qt6-keychain/pspec.xml + + + qt6-keychain + Provides support for secure credentials storage + + glib2 + libgcc + qt6-base + + + /usr/lib + /usr/share + /usr/share/doc + + + + qt6-keychain-devel + Development support for qt6-keychain + + qt6-keychain + + + /usr/lib/cmake + /usr/include + + + + + 2022-10-07 + 0.13.2 + First Release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-lottie + https://www.qt.io + + PisiLinux Community + admins@pisilinux.org + + custom, FDL, GPL3 + library + desktop.toolkit.qt6 + A family of player software for a certain json-based file format for describing 2d vector graphics animations + A family of player software for a certain json-based file format for describing 2d vector graphics animations + A family of player software for a certain json-based file format for describing 2d vector graphics animations + A family of player software for a certain json-based file format for describing 2d vector graphics animations + qt6-lottie + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtlottie-everywhere-src-6.4.0.tar.xz + + ninja + cmake + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-lottie/pspec.xml + + + qt6-lottie + + qt6-base + qt6-declarative + + + /usr/lib + /usr/share + /usr/share/doc + /usr/share/qt6/modules/ + + + + qt6-lottie-devel + Development files for qt6-lottie + + qt6-lottie + + + /usr/include + /usr/lib/cmake + /usr/lib/pkgconfig + + + + + 2022-10-07 + 6.4.0 + First release + PisiLinux Community + admins@pisilinux.org + + + + + + qt6-connectivity + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Provides access to Bluetooth hardware + Provides access to Bluetooth hardware + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtconnectivity-everywhere-src-6.4.0.tar.xz + + ninja + cmake + pcsc-lite-devel + bluez-libs-devel + qt6-sql-sqlite + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-connectivity/pspec.xml + + + qt6-connectivity + + pcsc-lite + bluez-libs + qt6-base + qt6-declarative + + + /usr/bin + /usr/lib + /usr/share/doc/qt6-connectivity + /usr/lib/qt6 + /usr/lib/qt6/bin/ + /usr/share/qt6/modules + + + + qt6-connectivity-devel + + qt6-connectivity + qt6-base-devel + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-websockets + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Provides WebSocket communication compliant with RFC 6455 + Provides WebSocket communication compliant with RFC 6455 + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtwebsockets-everywhere-src-6.4.0.tar.xz + + qt6-sql-sqlite + qt6-base-devel + qt6-declarative-devel + + desktop/toolkit/qt6/qt6-websockets/pspec.xml + + + qt6-websockets + + libgcc + qt6-base + qt6-declarative + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc/ + /usr/share/qt6/modules/WebSockets.json + + + + qt6-websockets-devel + + qt6-websockets + qt6-base-devel + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + 2022-10-07 + 6.4.0 + First release. + Mustafa Cinasal + muscnsl@gmail.com + + + + + + qt6-multimedia + http://qt.digia.com/ + + PisiLinux Community + admins@pisilinux.org + + LGPLv2.1-linking-exception + desktop.toolkit.qt6 + Classes for audio, video, radio and camera functionality + Classes for audio, video, radio and camera functionality + https://download.qt.io/official_releases/qt/6.4/6.4.0/submodules/qtmultimedia-everywhere-src-6.4.0.tar.xz + + ninja + cmake + icu4c-devel + libva-devel + ffmpeg-devel + openal-devel + libglvnd-devel + alsa-lib-devel + gstreamer-devel + pulseaudio-libs-devel + gst-plugins-bad-devel + mesa-devel + qt6-sql-sqlite + qt6-base-devel + qt6-shadertools-devel + qt6-declarative-devel + gst-plugins-base-devel + + desktop/toolkit/qt6/qt6-multimedia/pspec.xml + + + qt6-multimedia + + glib2 + libgcc + openal + libva + ffmpeg + libglvnd + alsa-lib + gstreamer + gst-plugins-bad + pulseaudio-libs + qt6-base + qt6-declarative + gst-plugins-base + + + /usr/lib + /usr/lib/qt6 + /usr/share/doc + /usr/share/qt6/modules + + + + qt6-multimedia-devel + + qt6-multimedia + qt6-base-devel + qt6-declarative-devel + + + /usr/lib/pkgconfig + /usr/include/qt6 + + + + + 2022-10-07 + 6.4.0 + First release + Mustafa Cinasal + muscnsl@gmail.com + + + qscintilla2 @@ -315039,7 +317831,7 @@ Konuk sanal makinede çalışan okuyucu. C Markdown parser C Markdown parser C Markdown parser - https://github.com/mity/md4c/archive/release-0.4.2.tar.gz + https://github.com/mity/md4c/archive/release-0.4.8.tar.gz cmake @@ -315059,7 +317851,7 @@ Konuk sanal makinede çalışan okuyucu. md4c-devel Development files for md4c - md4c + md4c /usr/include @@ -315068,6 +317860,13 @@ Konuk sanal makinede çalışan okuyucu. + + 2022-10-05 + 0.4.8 + Version bump. + Mustafa Cinasal + muscnsl@gmail.com + 2020-01-15 0.4.2 diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum index f5ac6d909a..65b8c8923d 100644 --- a/pisi-index.xml.sha1sum +++ b/pisi-index.xml.sha1sum @@ -1 +1 @@ -af120ba0987e0f578ebf9747c53acbe2a7135f32 \ No newline at end of file +670e5a0f81f6f7b3acef4db58696f94794624a0a \ No newline at end of file diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz index 4299c7b724..f8879db2c0 100644 Binary files a/pisi-index.xml.xz and b/pisi-index.xml.xz differ diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum index cbf288be64..5785386bea 100644 --- a/pisi-index.xml.xz.sha1sum +++ b/pisi-index.xml.xz.sha1sum @@ -1 +1 @@ -459868926882a0204ded415345e8b859d6429a66 \ No newline at end of file +ac8e047db66fceabef3399f32718b3ec01234516 \ No newline at end of file