rdieter pushed to qt5-qtdeclarative (f21). "restore fix for QTBUG-45753/kde-345544 lost in 5.4.2 rebase"

notifications at fedoraproject.org notifications at fedoraproject.org
Mon Jun 8 20:49:51 UTC 2015


From 4741dae1b2aedabbc3e87cf8e3f3088386270860 Mon Sep 17 00:00:00 2001
From: Rex Dieter <rdieter at math.unl.edu>
Date: Mon, 8 Jun 2015 13:47:30 -0500
Subject: restore fix for QTBUG-45753/kde-345544 lost in 5.4.2 rebase


diff --git a/Avoid-calling-potentially-pure-virtual-method.patch b/Avoid-calling-potentially-pure-virtual-method.patch
new file mode 100644
index 0000000..1f9d494
--- /dev/null
+++ b/Avoid-calling-potentially-pure-virtual-method.patch
@@ -0,0 +1,64 @@
+From 0d31aa1617c96ed3e3624d77332ea6f13aba1492 Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson at kde.org>
+Date: Thu, 23 Apr 2015 15:01:24 +0200
+Subject: [PATCH 67/68] Avoid calling potentially pure virtual method
+
+In Qt 5.4 screenChanged is called indirectly from the destructor of
+QPlatformScreen. By comparing new values against the oldScreen we call
+call virtual methods of QPlatformScreen from it's own destructor which
+results in a crash.
+
+This patch simply emits change signals whenever a screen change regardless
+of whether the value differs from the previous screen. Arguably less
+efficient, but better than crashing.
+
+This fix is not needed in Qt 5.5 where the QPA architecture has changed.
+
+Task-number: QTBUG-45753
+Change-Id: Ic155906928855a377add9b21bff9e72b31f4667e
+Reviewed-by: Alan Alpert <aalpert at blackberry.com>
+---
+ src/quick/items/qquickscreen.cpp | 27 +++++++++------------------
+ 1 file changed, 9 insertions(+), 18 deletions(-)
+
+diff --git a/src/quick/items/qquickscreen.cpp b/src/quick/items/qquickscreen.cpp
+index c4d1407..0900adb 100644
+--- a/src/quick/items/qquickscreen.cpp
++++ b/src/quick/items/qquickscreen.cpp
+@@ -347,24 +347,15 @@ void QQuickScreenAttached::screenChanged(QScreen *screen)
+             emit orientationUpdateMaskChanged();
+         }
+ 
+-        if (!oldScreen || screen->size() != oldScreen->size()) {
+-            emit widthChanged();
+-            emit heightChanged();
+-        }
+-        if (!oldScreen || screen->name() != oldScreen->name())
+-            emit nameChanged();
+-        if (!oldScreen || screen->orientation() != oldScreen->orientation())
+-            emit orientationChanged();
+-        if (!oldScreen || screen->primaryOrientation() != oldScreen->primaryOrientation())
+-            emit primaryOrientationChanged();
+-        if (!oldScreen || screen->availableVirtualGeometry() != oldScreen->availableVirtualGeometry())
+-            emit desktopGeometryChanged();
+-        if (!oldScreen || screen->logicalDotsPerInch() != oldScreen->logicalDotsPerInch())
+-            emit logicalPixelDensityChanged();
+-        if (!oldScreen || screen->physicalDotsPerInch() != oldScreen->physicalDotsPerInch())
+-            emit pixelDensityChanged();
+-        if (!oldScreen || screen->devicePixelRatio() != oldScreen->devicePixelRatio())
+-            emit devicePixelRatioChanged();
++        emit widthChanged();
++        emit heightChanged();
++        emit nameChanged();
++        emit orientationChanged();
++        emit primaryOrientationChanged();
++        emit desktopGeometryChanged();
++        emit logicalPixelDensityChanged();
++        emit pixelDensityChanged();
++        emit devicePixelRatioChanged();
+ 
+         connect(screen, SIGNAL(geometryChanged(QRect)),
+                 this, SIGNAL(widthChanged()));
+-- 
+2.3.7
+
diff --git a/qt5-qtdeclarative.spec b/qt5-qtdeclarative.spec
index 876006d..604e576 100644
--- a/qt5-qtdeclarative.spec
+++ b/qt5-qtdeclarative.spec
@@ -13,7 +13,7 @@
 Summary: Qt5 - QtDeclarative component
 Name:    qt5-%{qt_module}
 Version: 5.4.2
-Release: 1%{?dist}
+Release: 2%{?dist}
 
 # See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
 License: LGPLv2 with exceptions or GPLv3 with exceptions
@@ -24,12 +24,13 @@ Source0: http://download.qt-project.org/development_releases/qt/5.4/%{version}-%
 Source0: http://download.qt-project.org/official_releases/qt/5.4/%{version}/submodules/%{qt_module}-opensource-src-%{version}.tar.xz
 %endif
 
-## upstream patches
-
 # support no_sse2 CONFIG (fedora i686 builds cannot assume -march=pentium4 -msse2 -mfpmath=sse flags, or the JIT that needs them)
 # https://codereview.qt-project.org/#change,73710
 Patch1: qtdeclarative-opensource-src-5.4.1-no_sse2.patch
 
+# QTBUG-45753/kde-345544, can drop when 5.5.0 lands
+Patch2: Avoid-calling-potentially-pure-virtual-method.patch
+
 Obsoletes: qt5-qtjsbackend < 5.2.0
 
 BuildRequires: qt5-qtbase-devel >= %{version}
@@ -79,11 +80,9 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
 %prep
 %autosetup -p1 -n %{qt_module}-opensource-src-%{version}%{?pre:-%{pre}}
 
-#patch1 -p1 -b .no_sse2
-
 
 %build
-mkdir -p %{_target_platform}
+mkdir %{_target_platform}
 pushd %{_target_platform}
 %{qmake_qt5} ..
 popd
@@ -207,6 +206,9 @@ popd
 
 
 %changelog
+* Mon Jun 08 2015 Rex Dieter <rdieter at fedoraproject.org> 5.4.2-2
+- restore fix for QTBUG-45753/kde-345544 lost in 5.4.2 rebase
+
 * Wed Jun 03 2015 Jan Grulich <jgrulich at redhat.com> 5.4.2-1
 - 5.4.2
 
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/qt5-qtdeclarative.git/commit/?h=f21&id=4741dae1b2aedabbc3e87cf8e3f3088386270860


More information about the scm-commits mailing list