[arch-commits] Commit in qt5-declarative/trunk (3 files)

Antonio Rojas arojas at archlinux.org
Wed Nov 1 18:39:44 UTC 2017


    Date: Wednesday, November 1, 2017 @ 18:39:43
  Author: arojas
Revision: 308814

Fix loading of QML Applications

Added:
  qt5-declarative/trunk/qtbug-64017.patch
Modified:
  qt5-declarative/trunk/PKGBUILD
Deleted:
  qt5-declarative/trunk/qtbug-61754.patch

-------------------+
 PKGBUILD          |   10 +++++--
 qtbug-61754.patch |   25 ------------------
 qtbug-64017.patch |   69 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+), 28 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2017-11-01 18:36:19 UTC (rev 308813)
+++ PKGBUILD	2017-11-01 18:39:43 UTC (rev 308814)
@@ -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,8 +16,9 @@
 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
@@ -24,6 +25,9 @@
 
   # 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() {

Deleted: qtbug-61754.patch
===================================================================
--- qtbug-61754.patch	2017-11-01 18:36:19 UTC (rev 308813)
+++ qtbug-61754.patch	2017-11-01 18:39:43 UTC (rev 308814)
@@ -1,25 +0,0 @@
-From 768f606cd3cd37c235e85225127201a42d272946 Mon Sep 17 00:00:00 2001
-From: Joni Poikelin <joni.poikelin at 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 at qt.io>
-Reviewed-by: Roger Zanoni <rogerzanoni at 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;

Added: qtbug-64017.patch
===================================================================
--- qtbug-64017.patch	                        (rev 0)
+++ qtbug-64017.patch	2017-11-01 18:39:43 UTC (rev 308814)
@@ -0,0 +1,69 @@
+From b96e3fa733379e58dd4225f535eb13df8bb83734 Mon Sep 17 00:00:00 2001
+From: Erik Verbruggen <erik.verbruggen at 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
+



More information about the arch-commits mailing list