pull in candidate memleak fix (review#224684)

This commit is contained in:
Rex Dieter 2018-04-03 11:17:39 -05:00
parent 493717fb42
commit 983537cbc2
2 changed files with 32 additions and 1 deletions

View File

@ -14,7 +14,7 @@
Summary: Qt5 - QtDeclarative component
Name: qt5-%{qt_module}
Version: 5.10.1
Release: 4%{?dist}
Release: 5%{?dist}
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
License: LGPLv2 with exceptions or GPLv3 with exceptions
@ -35,6 +35,9 @@ 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
# regression https://bugreports.qt.io/browse/QTBUG-64017
# so revert this offending commit (for now)
Patch111: 0111-Fix-qml-cache-invalidation-when-changing-dependent-C.patch
@ -102,8 +105,11 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
%endif
%patch2 -p1 -b .QQuickShaderEffectSource_deadlock
%patch100 -p1 -b .memleak
%patch111 -p1 -R -b .0111
%patch201 -p0 -b .kdebug346118
%patch202 -p1 -b .no_sse2_non_fatal
@ -232,6 +238,9 @@ make check -k -C tests ||:
%changelog
* Tue Apr 03 2018 Rex Dieter <rdieter@fedoraproject.org> - 5.10.1-5
- pull in candidate memleak fix (review#224684)
* Sun Mar 18 2018 Iryna Shcherbina <ishcherb@redhat.com> - 5.10.1-4
- Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)

22
qtdeclarative-leak.patch Normal file
View File

@ -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;