author | Antonio Rojas
<arojas@archlinux.org> 2017-11-01 18:39:43 UTC |
committer | Antonio Rojas
<arojas@archlinux.org> 2017-11-01 18:39:43 UTC |
parent | 89866ac428bddf266958f7f080230782c8e38e81 |
PKGBUILD | +7 | -3 |
qtbug-61754.patch | +0 | -25 |
qtbug-64017.patch | +69 | -0 |
diff --git a/PKGBUILD b/PKGBUILD index 30fa2e1..24895fa 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,7 +5,7 @@ pkgname=qt5-declarative _qtver=5.9.2 pkgver=${_qtver/-/} -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') url='http://qt-project.org/' license=('GPL3' 'LGPL3' 'FDL' 'custom') @@ -16,14 +16,18 @@ groups=('qt' 'qt5') conflicts=('qtchooser' 'qt5-declarative-render2d') replaces=('qt5-declarative-render2d') _pkgfqn="${pkgname/5-/}-opensource-src-${_qtver}" -source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz") -sha256sums=('0d40fd4de9c73b9173d8308c0dc37952bf5c747d87ff221962dd2f848d820b08') +source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz" qtbug-64017.patch) +sha256sums=('0d40fd4de9c73b9173d8308c0dc37952bf5c747d87ff221962dd2f848d820b08' + 'fb2bfbef21f60943dc1c540c4d63bfc41465577b6438d6c552b993127f27d68f') prepare() { mkdir -p build # Use python2 for Python 2.x find -name '*.pro' -o -name '*.pri' | xargs sed -i -e 's|python -c|python2 -c|g' -e 's|python \$|python2 \$|g' + + cd ${_pkgfqn} + patch -p1 -i ../qtbug-64017.patch # Fix loading of QML applications https://bugreports.qt.io/browse/QTBUG-64017 } build() { diff --git a/qtbug-61754.patch b/qtbug-61754.patch deleted file mode 100644 index e5352ec..0000000 --- a/qtbug-61754.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 768f606cd3cd37c235e85225127201a42d272946 Mon Sep 17 00:00:00 2001 -From: Joni Poikelin <joni.poikelin@qt.io> -Date: Thu, 17 Aug 2017 09:49:25 +0300 -Subject: [PATCH] Fix memory leaks with threaded renderer - -Reverts 39061af50cc3092289cdd71d17802139590ecb59 and calls endSync() -instead after syncSceneGraph(). - -Task-number: QTBUG-61754 -Change-Id: I7b51ffdc93557bacd93927dd642ec3715980b21c -Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> -Reviewed-by: Roger Zanoni <rogerzanoni@gmail.com> ---- -diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp -index 3a8e673c0..d28a73da2 100644 ---- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp -+++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp -@@ -553,6 +553,7 @@ void QSGRenderThread::sync(bool inExpose) - if (d->renderer) - d->renderer->clearChangedFlag(); - d->syncSceneGraph(); -+ sgrc->endSync(); - if (!hadRenderer && d->renderer) { - qCDebug(QSG_LOG_RENDERLOOP) << QSG_RT_PAD << "- renderer was created"; - syncResultedInChanges = true; diff --git a/qtbug-64017.patch b/qtbug-64017.patch new file mode 100644 index 0000000..e1a1866 --- /dev/null +++ b/qtbug-64017.patch @@ -0,0 +1,69 @@ +From b96e3fa733379e58dd4225f535eb13df8bb83734 Mon Sep 17 00:00:00 2001 +From: Erik Verbruggen <erik.verbruggen@qt.io> +Date: Wed, 1 Nov 2017 12:48:12 +0100 +Subject: [PATCH] Prevent the QML engine from registering circular dependencies + +Change-Id: Ic4fd2bde745e7dfaf0909e8cc575441bb04cefa3 +Task-number: QTBUG-64017 +--- + src/qml/qml/qqmltypeloader.cpp | 10 +++++++++- + src/qml/qml/qqmltypeloader_p.h | 1 + + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp +index 193acb04be7..d9d7c193127 100644 +--- a/src/qml/qml/qqmltypeloader.cpp ++++ b/src/qml/qml/qqmltypeloader.cpp +@@ -316,7 +316,8 @@ Returns true if the status is WaitingForDependencies. + */ + bool QQmlDataBlob::isWaiting() const + { +- return status() == WaitingForDependencies; ++ return status() == WaitingForDependencies || ++ status() == ResolvingDependencies; + } + + /*! +@@ -608,6 +609,7 @@ The default implementation does nothing. + */ + void QQmlDataBlob::allDependenciesDone() + { ++ m_data.setStatus(QQmlDataBlob::ResolvingDependencies); + } + + /*! +@@ -2499,6 +2501,8 @@ void QQmlTypeData::continueLoadFromIR() + + void QQmlTypeData::allDependenciesDone() + { ++ QQmlTypeLoader::Blob::allDependenciesDone(); ++ + if (!m_typesResolved) { + // Check that all imports were resolved + QList<QQmlError> errors; +@@ -2618,6 +2622,10 @@ void QQmlTypeData::resolveTypes() + + if (ref.type.isCompositeSingleton()) { + ref.typeData = typeLoader()->getType(ref.type.sourceUrl()); ++ if (ref.typeData->status() == QQmlDataBlob::ResolvingDependencies) { ++ // TODO: give an error message? If so, we should record and show the path of the cycle. ++ continue; ++ } + addDependency(ref.typeData); + ref.prefix = csRef.prefix; + +diff --git a/src/qml/qml/qqmltypeloader_p.h b/src/qml/qml/qqmltypeloader_p.h +index ef63e02b4f0..22ac61968fc 100644 +--- a/src/qml/qml/qqmltypeloader_p.h ++++ b/src/qml/qml/qqmltypeloader_p.h +@@ -98,6 +98,7 @@ public: + Null, // Prior to QQmlTypeLoader::load() + Loading, // Prior to data being received and dataReceived() being called + WaitingForDependencies, // While there are outstanding addDependency()s ++ ResolvingDependencies, // While resolving outstanding dependencies, to detect cycles + Complete, // Finished + Error // Error + }; +-- +2.14.2 +