Accepting request 304230 from KDE:Qt5
- Add avoid-calling-potentially-pure-virtual-method.patch, QTBUG#45753 - Extend sse2_nojit.patch to warn users without SSE2 extension that their processor is officially not supported. Also pass -msse2 -mfpmath=sse flags when we are building with SSE2 OBS-URL: https://build.opensuse.org/request/show/304230 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtdeclarative?expand=0&rev=24
This commit is contained in:
parent
52a4e161c6
commit
496a1fa8e0
61
avoid-calling-potentially-pure-virtual-method.patch
Normal file
61
avoid-calling-potentially-pure-virtual-method.patch
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
Parent: 9934c075 (QML: do not check stack size if stack grows up)
|
||||||
|
Author: David Edmundson <davidedmundson@kde.org>
|
||||||
|
AuthorDate: 2015-04-23 15:01:24 +0200
|
||||||
|
Commit: David Edmundson <davidedmundson@kde.org>
|
||||||
|
CommitDate: 2015-04-23 15:05:32 +0200
|
||||||
|
|
||||||
|
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
|
||||||
|
---
|
||||||
|
|
||||||
|
diff --git a/src/quick/items/qquickscreen.cpp b/src/quick/items/qquickscreen.cpp
|
||||||
|
index 8ac5a1e..c19841f 100644
|
||||||
|
--- a/src/quick/items/qquickscreen.cpp
|
||||||
|
+++ b/src/quick/items/qquickscreen.cpp
|
||||||
|
@@ -340,24 +340,15 @@ void QQuickScreenAttached::screenChanged(QScreen *screen)
|
||||||
|
|
||||||
|
screen->setOrientationUpdateMask(m_updateMask);
|
||||||
|
|
||||||
|
- 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()));
|
@ -1,3 +1,15 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Apr 27 18:14:35 UTC 2015 - hrvoje.senjan@gmail.com
|
||||||
|
|
||||||
|
- Add avoid-calling-potentially-pure-virtual-method.patch, QTBUG#45753
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Apr 25 10:50:08 UTC 2015 - hrvoje.senjan@gmail.com
|
||||||
|
|
||||||
|
- Extend sse2_nojit.patch to warn users without SSE2 extension that
|
||||||
|
their processor is officially not supported.
|
||||||
|
Also pass -msse2 -mfpmath=sse flags when we are building with SSE2
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Apr 9 17:30:27 UTC 2015 - hrvoje.senjan@gmail.com
|
Thu Apr 9 17:30:27 UTC 2015 - hrvoje.senjan@gmail.com
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@ Url: http://qt.digia.com
|
|||||||
%define tar_version qtdeclarative-opensource-src-%{real_version}
|
%define tar_version qtdeclarative-opensource-src-%{real_version}
|
||||||
Source: %{tar_version}.tar.xz
|
Source: %{tar_version}.tar.xz
|
||||||
Source1: baselibs.conf
|
Source1: baselibs.conf
|
||||||
|
# PATCH-FIX-UPSTREAM avoid-calling-potentially-pure-virtual-method.patch
|
||||||
|
Patch0: avoid-calling-potentially-pure-virtual-method.patch
|
||||||
# PATCH-FIX-OPENSUSE sse2_nojit.patch -- enable JIT and sse2 only on sse2 case
|
# PATCH-FIX-OPENSUSE sse2_nojit.patch -- enable JIT and sse2 only on sse2 case
|
||||||
Patch100: sse2_nojit.patch
|
Patch100: sse2_nojit.patch
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
@ -71,6 +73,7 @@ handling.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n qtdeclarative-opensource-src-%{real_version}
|
%setup -q -n qtdeclarative-opensource-src-%{real_version}
|
||||||
|
%patch0 -p1
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
|
|
||||||
%package -n %libname
|
%package -n %libname
|
||||||
|
@ -1,8 +1,24 @@
|
|||||||
|
diff --git a/src/qml/jsruntime/jsruntime.pri b/src/qml/jsruntime/jsruntime.pri
|
||||||
|
index c27aaa9..05c86e8 100644
|
||||||
|
--- a/src/qml/jsruntime/jsruntime.pri
|
||||||
|
+++ b/src/qml/jsruntime/jsruntime.pri
|
||||||
|
@@ -105,6 +105,11 @@ SOURCES += \
|
||||||
|
$$PWD/qv4string.cpp \
|
||||||
|
$$PWD/qv4value.cpp
|
||||||
|
|
||||||
|
+linux-g++*:isEqual(QT_ARCH,i386):!no_sse2 {
|
||||||
|
+ QMAKE_CFLAGS += -msse2 -mfpmath=sse
|
||||||
|
+ QMAKE_CXXFLAGS += -msse2 -mfpmath=sse
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
valgrind {
|
||||||
|
DEFINES += V4_USE_VALGRIND
|
||||||
|
}
|
||||||
diff --git a/src/qml/jsruntime/qv4global_p.h b/src/qml/jsruntime/qv4global_p.h
|
diff --git a/src/qml/jsruntime/qv4global_p.h b/src/qml/jsruntime/qv4global_p.h
|
||||||
index a00231c..2a8f5d3 100644
|
index a58beb3..85e8dc0 100644
|
||||||
--- a/src/qml/jsruntime/qv4global_p.h
|
--- a/src/qml/jsruntime/qv4global_p.h
|
||||||
+++ b/src/qml/jsruntime/qv4global_p.h
|
+++ b/src/qml/jsruntime/qv4global_p.h
|
||||||
@@ -85,7 +85,7 @@ inline double trunc(double d) { return d
|
@@ -85,7 +85,7 @@ inline double trunc(double d) { return d > 0 ? floor(d) : ceil(d); }
|
||||||
|
|
||||||
// Black list some platforms
|
// Black list some platforms
|
||||||
#if defined(V4_ENABLE_JIT)
|
#if defined(V4_ENABLE_JIT)
|
||||||
@ -11,3 +27,16 @@ index a00231c..2a8f5d3 100644
|
|||||||
# undef V4_ENABLE_JIT
|
# undef V4_ENABLE_JIT
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp
|
||||||
|
index 39b816f..762ee61 100644
|
||||||
|
--- a/src/qml/qml/v8/qv8engine.cpp
|
||||||
|
+++ b/src/qml/qml/v8/qv8engine.cpp
|
||||||
|
@@ -123,7 +123,7 @@ QV8Engine::QV8Engine(QJSEngine* qq)
|
||||||
|
{
|
||||||
|
#ifdef Q_PROCESSOR_X86_32
|
||||||
|
if (!qCpuHasFeature(SSE2)) {
|
||||||
|
- qFatal("This program requires an X86 processor that supports SSE2 extension, at least a Pentium 4 or newer");
|
||||||
|
+ qDebug("This program requires an X86 processor that supports SSE2 extension, at least a Pentium 4 or newer, processors missing the extension are NOT supported to run QML2 code!");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user