diff --git a/.gitignore b/.gitignore index 4275c94..e30f9cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/qtdeclarative-opensource-src-5.9.2.tar.xz +SOURCES/qtdeclarative-opensource-src-5.9.7.tar.xz diff --git a/.qt5-qtdeclarative.metadata b/.qt5-qtdeclarative.metadata index e8eafb6..6d7b5cf 100644 --- a/.qt5-qtdeclarative.metadata +++ b/.qt5-qtdeclarative.metadata @@ -1 +1 @@ -8cbb0fd759a4a4ce95e6d38159543080cb83ff4d SOURCES/qtdeclarative-opensource-src-5.9.2.tar.xz +1ebb313800c937f09a983a625b5cfa4af3193934 SOURCES/qtdeclarative-opensource-src-5.9.7.tar.xz diff --git a/SOURCES/0028-Rebuild-property-cache-in-QObjectWrapper-getProperty.patch b/SOURCES/0028-Rebuild-property-cache-in-QObjectWrapper-getProperty.patch new file mode 100644 index 0000000..7c6705f --- /dev/null +++ b/SOURCES/0028-Rebuild-property-cache-in-QObjectWrapper-getProperty.patch @@ -0,0 +1,41 @@ +From 73e8321255d9f0e70529a58c10dbaf4790a9a659 Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Tue, 6 Mar 2018 10:56:23 +0000 +Subject: [PATCH 28/29] Rebuild property cache in QObjectWrapper::getProperty + if deleted + +QQmlData is shared between engines, but the relevant QObjectWrapper is +not. + +Since 749a7212e903d8e8c6f256edb1836b9449cc7fe1 when a QObjectWrapper is +deleted it resets the shared QQmlData propertyCache. + +ab5d4c78224c9ec79165e8890e5f8b8e838e0709 fixed this situation for +bindings, however we would still hit effectively the same crash in the +same situation if a function is evaluated before a binding. + +Change-Id: I20cd91cd8e31fd0176d542822c67e81a790599ba +Reviewed-by: Simon Hausmann +--- + src/qml/jsruntime/qv4qobjectwrapper.cpp | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp +index 5ebd385cf..c1bbe2a33 100644 +--- a/src/qml/jsruntime/qv4qobjectwrapper.cpp ++++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp +@@ -335,6 +335,11 @@ ReturnedValue QObjectWrapper::getProperty(ExecutionEngine *engine, QObject *obje + if (!ddata) + return QV4::Encode::undefined(); + ++ if (Q_UNLIKELY(!ddata->propertyCache)) { ++ ddata->propertyCache = QQmlEnginePrivate::get(engine)->cache(object->metaObject()); ++ ddata->propertyCache->addref(); ++ } ++ + QQmlPropertyCache *cache = ddata->propertyCache; + Q_ASSERT(cache); + QQmlPropertyData *property = cache->property(propertyIndex); +-- +2.14.3 + diff --git a/SOURCES/qtdeclarative-leak.patch b/SOURCES/qtdeclarative-leak.patch new file mode 100644 index 0000000..141aba3 --- /dev/null +++ b/SOURCES/qtdeclarative-leak.patch @@ -0,0 +1,22 @@ +diff -up qtdeclarative-everywhere-src-5.10.1/src/quick/scenegraph/qsgrenderloop.cpp.leak qtdeclarative-everywhere-src-5.10.1/src/quick/scenegraph/qsgrenderloop.cpp +--- qtdeclarative-everywhere-src-5.10.1/src/quick/scenegraph/qsgrenderloop.cpp.leak 2018-04-03 11:14:09.975064043 -0500 ++++ qtdeclarative-everywhere-src-5.10.1/src/quick/scenegraph/qsgrenderloop.cpp 2018-04-03 11:15:29.347573091 -0500 +@@ -305,6 +305,8 @@ void QSGGuiThreadRenderLoop::hide(QQuick + { + QQuickWindowPrivate *cd = QQuickWindowPrivate::get(window); + cd->fireAboutToStop(); ++ if (m_windows.contains(window)) ++ m_windows[window].updatePending = false; + } + + void QSGGuiThreadRenderLoop::windowDestroyed(QQuickWindow *window) +@@ -494,7 +496,8 @@ QImage QSGGuiThreadRenderLoop::grab(QQui + + void QSGGuiThreadRenderLoop::maybeUpdate(QQuickWindow *window) + { +- if (!m_windows.contains(window)) ++ QQuickWindowPrivate *cd = QQuickWindowPrivate::get(window); ++ if (!cd->isRenderable() || !m_windows.contains(window)) + return; + + m_windows[window].updatePending = true; diff --git a/SPECS/qt5-qtdeclarative.spec b/SPECS/qt5-qtdeclarative.spec index a51b674..feb892e 100644 --- a/SPECS/qt5-qtdeclarative.spec +++ b/SPECS/qt5-qtdeclarative.spec @@ -24,7 +24,7 @@ Summary: Qt5 - QtDeclarative component Name: qt5-%{qt_module} -Version: 5.9.2 +Version: 5.9.7 Release: 1%{?dist} # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details @@ -46,6 +46,11 @@ Patch1: qtdeclarative-opensource-src-5.9.0-no_sse2.patch Patch2: qtdeclarative-QQuickShaderEffectSource_deadlock.patch ## upstream patches +# https://codereview.qt-project.org/#/c/224684/ +Patch100: qtdeclarative-leak.patch + +# 5.11 branch fixes +Patch128: 0028-Rebuild-property-cache-in-QObjectWrapper-getProperty.patch ## upstreamable patches @@ -120,6 +125,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %patch1 -p1 -b .no_sse2 %endif %patch2 -p1 -b .QQuickShaderEffectSource_deadlock + +%patch100 -p1 -b .memleak + +%patch128 -p1 -b .0028 + %patch201 -p0 -b .kdebug346118 %patch202 -p1 -b .no_sse2_non_fatal @@ -265,6 +275,10 @@ make check -k -C tests ||: %changelog +* Thu Feb 07 2019 Jan Grulich - 5.9.7-1 +- Update to 5.9.7 + Resolves: bz#1564003 + * Fri Oct 06 2017 Jan Grulich - 5.9.2-1 - Update to 5.9.2 Resolves: bz#1482778