From 4741dae1b2aedabbc3e87cf8e3f3088386270860 Mon Sep 17 00:00:00 2001 From: Rex Dieter Date: Jun 08 2015 18:47:30 +0000 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 +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 +--- + 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 5.4.2-2 +- restore fix for QTBUG-45753/kde-345544 lost in 5.4.2 rebase + * Wed Jun 03 2015 Jan Grulich 5.4.2-1 - 5.4.2