5.6.0-4
- backport upstream fixes - drop -fno-delete-null-pointer-checks hack (included in qt5-rpm-macros as needed now)
This commit is contained in:
parent
3c01417b2f
commit
51873329cb
@ -0,0 +1,33 @@
|
||||
From 9783991b615484d2926e9648b10ea090af81d93f Mon Sep 17 00:00:00 2001
|
||||
From: Mitch Curtis <mitch.curtis@theqtcompany.com>
|
||||
Date: Wed, 3 Feb 2016 12:57:05 +0100
|
||||
Subject: [PATCH 08/61] Fix crash when Canvas has negative width or height
|
||||
|
||||
m_fbo is null when using a threaded render loop.
|
||||
|
||||
Change-Id: I297ba651f9605f1718dbe9d09bd30e9682fb8401
|
||||
Task-number: QTBUG-50085
|
||||
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
||||
---
|
||||
src/quick/items/context2d/qquickcontext2dtexture.cpp | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/quick/items/context2d/qquickcontext2dtexture.cpp b/src/quick/items/context2d/qquickcontext2dtexture.cpp
|
||||
index 73b0b55..5ac971d 100644
|
||||
--- a/src/quick/items/context2d/qquickcontext2dtexture.cpp
|
||||
+++ b/src/quick/items/context2d/qquickcontext2dtexture.cpp
|
||||
@@ -599,6 +599,11 @@ QPaintDevice* QQuickContext2DFBOTexture::beginPainting()
|
||||
void QQuickContext2DFBOTexture::endPainting()
|
||||
{
|
||||
QQuickContext2DTexture::endPainting();
|
||||
+
|
||||
+ // There may not be an FBO due to zero width or height.
|
||||
+ if (!m_fbo)
|
||||
+ return;
|
||||
+
|
||||
if (m_multisampledFbo)
|
||||
QOpenGLFramebufferObject::blitFramebuffer(m_fbo, m_multisampledFbo);
|
||||
|
||||
--
|
||||
1.9.3
|
||||
|
60
0019-Revert-Fix-crash-on-QQmlEngine-destruction.patch
Normal file
60
0019-Revert-Fix-crash-on-QQmlEngine-destruction.patch
Normal file
@ -0,0 +1,60 @@
|
||||
From 427ca15418c05e628bae3451c263be198e721ba9 Mon Sep 17 00:00:00 2001
|
||||
From: Robin Burchell <robin.burchell@viroteck.net>
|
||||
Date: Wed, 17 Feb 2016 01:35:29 +0100
|
||||
Subject: [PATCH 19/61] Revert "Fix crash on QQmlEngine destruction."
|
||||
|
||||
This reverts commit 2e75be5f64fb21cbbdff3353dbd507c2ca26946a.
|
||||
|
||||
This patch was originally written by Andrew den Exter in
|
||||
222e06bf4ed509e72c1533cbe1d4859ca96933f3, externally from the main Qt tree. I
|
||||
upstreamed this as part of our porting efforts.
|
||||
|
||||
Some time later, this was accidentally reverted in
|
||||
2e75be5f64fb21cbbdff3353dbd507c2ca26946a: we can't go back in time to examine
|
||||
exactly what happened, but presumably Andrew didn't notice that I had upstreamed
|
||||
this, attempted to apply the patch and ignored the "already applied" warning by
|
||||
accident - and continued on dutifully with the patch accidentally reverted.
|
||||
|
||||
This change is correct, though, and is thus reinstated.
|
||||
|
||||
Change-Id: Idfe6ab39ad011f0401de25fe056aa3eb3fb8b424
|
||||
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
|
||||
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
||||
---
|
||||
src/qml/qml/qqmlengine.cpp | 4 ++--
|
||||
src/qml/qml/qqmlengine_p.h | 3 +--
|
||||
2 files changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp
|
||||
index 109cfac..2cfe468 100644
|
||||
--- a/src/qml/qml/qqmlengine.cpp
|
||||
+++ b/src/qml/qml/qqmlengine.cpp
|
||||
@@ -598,8 +598,8 @@ QQmlEnginePrivate::QQmlEnginePrivate(QQmlEngine *e)
|
||||
workerScriptEngine(0),
|
||||
activeObjectCreator(0),
|
||||
networkAccessManager(0), networkAccessManagerFactory(0), urlInterceptor(0),
|
||||
- scarceResourcesRefCount(0), typeLoader(e), importDatabase(e), uniqueId(1),
|
||||
- incubatorCount(0), incubationController(0)
|
||||
+ scarceResourcesRefCount(0), importDatabase(e), typeLoader(e),
|
||||
+ uniqueId(1), incubatorCount(0), incubationController(0)
|
||||
{
|
||||
}
|
||||
|
||||
diff --git a/src/qml/qml/qqmlengine_p.h b/src/qml/qml/qqmlengine_p.h
|
||||
index 26ee3bd..072a6c4 100644
|
||||
--- a/src/qml/qml/qqmlengine_p.h
|
||||
+++ b/src/qml/qml/qqmlengine_p.h
|
||||
@@ -166,9 +166,8 @@ public:
|
||||
void referenceScarceResources();
|
||||
void dereferenceScarceResources();
|
||||
|
||||
- QQmlTypeLoader typeLoader;
|
||||
QQmlImportDatabase importDatabase;
|
||||
-
|
||||
+ QQmlTypeLoader typeLoader;
|
||||
|
||||
QString offlineStoragePath;
|
||||
|
||||
--
|
||||
1.9.3
|
||||
|
30
0029-Avoid-div-by-zero-when-nothing-is-rendered.patch
Normal file
30
0029-Avoid-div-by-zero-when-nothing-is-rendered.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From e01bed44bca9bd0919f70dfc14f8297415d61bd9 Mon Sep 17 00:00:00 2001
|
||||
From: Gunnar Sletta <gunnar@sletta.org>
|
||||
Date: Mon, 15 Feb 2016 08:02:50 +0100
|
||||
Subject: [PATCH 29/61] Avoid div-by-zero when nothing is rendered.
|
||||
|
||||
Change-Id: I3eb57baf1812f831335429cc7d2b4424f3cfa785
|
||||
Task-number: QTBUG-50929
|
||||
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
||||
---
|
||||
src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
|
||||
index b1792d2..dd1ff14 100644
|
||||
--- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
|
||||
+++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp
|
||||
@@ -2654,7 +2654,9 @@ void Renderer::render()
|
||||
if (m_alphaBatches.size())
|
||||
std::sort(&m_alphaBatches.first(), &m_alphaBatches.last() + 1, qsg_sort_batch_increasing_order);
|
||||
|
||||
- m_zRange = 1.0 / (m_nextRenderOrder);
|
||||
+ m_zRange = m_nextRenderOrder != 0
|
||||
+ ? 1.0 / (m_nextRenderOrder)
|
||||
+ : 0;
|
||||
}
|
||||
|
||||
if (Q_UNLIKELY(debug_render())) timeSorting = timer.restart();
|
||||
--
|
||||
1.9.3
|
||||
|
116
Check-for-NULL-from-glGetString.patch
Normal file
116
Check-for-NULL-from-glGetString.patch
Normal file
@ -0,0 +1,116 @@
|
||||
From d4efd5ab810e92202efe672be29136324dd2a3f9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= <davispuh@gmail.com>
|
||||
Date: Mon, 28 Dec 2015 05:43:18 +0200
|
||||
Subject: [PATCH] Check for NULL from glGetString
|
||||
|
||||
glGetString can return NULL pointer in case of error
|
||||
so check for it before using.
|
||||
|
||||
Change-Id: Ia07424c8f2b3ce6dce675514900a509e3ef3b739
|
||||
---
|
||||
src/particles/qquickimageparticle.cpp | 6 ++++--
|
||||
src/quick/scenegraph/qsgcontext.cpp | 22 ++++++++++++++++------
|
||||
.../qsgdefaultdistancefieldglyphcache.cpp | 8 +++++---
|
||||
src/quick/scenegraph/util/qsgatlastexture.cpp | 4 ++--
|
||||
4 files changed, 27 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/src/particles/qquickimageparticle.cpp b/src/particles/qquickimageparticle.cpp
|
||||
index d78a350..b54861e 100644
|
||||
--- a/src/particles/qquickimageparticle.cpp
|
||||
+++ b/src/particles/qquickimageparticle.cpp
|
||||
@@ -1276,14 +1276,16 @@ void QQuickImageParticle::finishBuildParticleNodes(QSGNode** node)
|
||||
// OS X 10.8.3 introduced a bug in the AMD drivers, for at least the 2011 macbook pros,
|
||||
// causing point sprites who read gl_PointCoord in the frag shader to come out as
|
||||
// green-red blobs.
|
||||
- if (perfLevel < Deformable && strstr((char *) glGetString(GL_VENDOR), "ATI")) {
|
||||
+ const char *vendor = (const char *) glGetString(GL_VENDOR);
|
||||
+ if (perfLevel < Deformable && vendor && strstr(vendor, "ATI")) {
|
||||
perfLevel = Deformable;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
// Nouveau drivers can potentially freeze a machine entirely when taking the point-sprite path.
|
||||
- if (perfLevel < Deformable && strstr((const char *) glGetString(GL_VENDOR), "nouveau"))
|
||||
+ const char *vendor = (const char *) glGetString(GL_VENDOR);
|
||||
+ if (perfLevel < Deformable && vendor && strstr(vendor, "nouveau"))
|
||||
perfLevel = Deformable;
|
||||
#endif
|
||||
|
||||
diff --git a/src/quick/scenegraph/qsgcontext.cpp b/src/quick/scenegraph/qsgcontext.cpp
|
||||
index dd6977e..43d549f 100644
|
||||
--- a/src/quick/scenegraph/qsgcontext.cpp
|
||||
+++ b/src/quick/scenegraph/qsgcontext.cpp
|
||||
@@ -624,14 +624,24 @@ void QSGRenderContext::initialize(QOpenGLContext *context)
|
||||
m_sg->renderContextInitialized(this);
|
||||
|
||||
#ifdef Q_OS_LINUX
|
||||
+ while (funcs->glGetError() != GL_NO_ERROR);
|
||||
+
|
||||
const char *vendor = (const char *) funcs->glGetString(GL_VENDOR);
|
||||
- if (strstr(vendor, "nouveau"))
|
||||
- m_brokenIBOs = true;
|
||||
const char *renderer = (const char *) funcs->glGetString(GL_RENDERER);
|
||||
- if (strstr(renderer, "llvmpipe"))
|
||||
- m_serializedRender = true;
|
||||
- if (strstr(vendor, "Hisilicon Technologies") && strstr(renderer, "Immersion.16"))
|
||||
- m_brokenIBOs = true;
|
||||
+
|
||||
+ if (vendor && renderer) {
|
||||
+ if (strstr(vendor, "nouveau"))
|
||||
+ m_brokenIBOs = true;
|
||||
+ if (strstr(renderer, "llvmpipe"))
|
||||
+ m_serializedRender = true;
|
||||
+ if (strstr(vendor, "Hisilicon Technologies") && strstr(renderer, "Immersion.16"))
|
||||
+ m_brokenIBOs = true;
|
||||
+ } else {
|
||||
+ GLenum err;
|
||||
+ while ((err = funcs->glGetError()) != GL_NO_ERROR) {
|
||||
+ qWarning("QSGRenderContext::initialize: GL error %x from glGetString", err);
|
||||
+ }
|
||||
+ }
|
||||
#endif
|
||||
|
||||
emit initialized();
|
||||
diff --git a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
|
||||
index dcc485c..43e234b 100644
|
||||
--- a/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
|
||||
+++ b/src/quick/scenegraph/qsgdefaultdistancefieldglyphcache.cpp
|
||||
@@ -488,9 +488,11 @@ bool QSGDefaultDistanceFieldGlyphCache::useTextureUploadWorkaround() const
|
||||
static bool set = false;
|
||||
static bool useWorkaround = false;
|
||||
if (!set) {
|
||||
- useWorkaround = qstrcmp(reinterpret_cast<const char*>(m_funcs->glGetString(GL_RENDERER)),
|
||||
- "Mali-400 MP") == 0;
|
||||
- set = true;
|
||||
+ const char *renderer = reinterpret_cast<const char*>(m_funcs->glGetString(GL_RENDERER));
|
||||
+ if (renderer) {
|
||||
+ useWorkaround = qstrcmp(renderer, "Mali-400 MP") == 0;
|
||||
+ set = true;
|
||||
+ }
|
||||
}
|
||||
return useWorkaround;
|
||||
}
|
||||
diff --git a/src/quick/scenegraph/util/qsgatlastexture.cpp b/src/quick/scenegraph/util/qsgatlastexture.cpp
|
||||
index 8e8e870..d726907 100644
|
||||
--- a/src/quick/scenegraph/util/qsgatlastexture.cpp
|
||||
+++ b/src/quick/scenegraph/util/qsgatlastexture.cpp
|
||||
@@ -150,13 +150,13 @@ Atlas::Atlas(const QSize &size)
|
||||
wrongfullyReportsBgra8888Support = false;
|
||||
|
||||
const char *ext = (const char *) QOpenGLContext::currentContext()->functions()->glGetString(GL_EXTENSIONS);
|
||||
- if (!wrongfullyReportsBgra8888Support
|
||||
+ if (!wrongfullyReportsBgra8888Support && ext
|
||||
&& (strstr(ext, "GL_EXT_bgra")
|
||||
|| strstr(ext, "GL_EXT_texture_format_BGRA8888")
|
||||
|| strstr(ext, "GL_IMG_texture_format_BGRA8888"))) {
|
||||
m_internalFormat = m_externalFormat = GL_BGRA;
|
||||
#ifdef Q_OS_IOS
|
||||
- } else if (strstr(ext, "GL_APPLE_texture_format_BGRA8888")) {
|
||||
+ } else if (ext && strstr(ext, "GL_APPLE_texture_format_BGRA8888")) {
|
||||
m_internalFormat = GL_RGBA;
|
||||
m_externalFormat = GL_BGRA;
|
||||
#endif // IOS
|
||||
--
|
||||
1.9.3
|
||||
|
@ -17,7 +17,7 @@
|
||||
Summary: Qt5 - QtDeclarative component
|
||||
Name: qt5-%{qt_module}
|
||||
Version: 5.6.0
|
||||
Release: 3%{?prerelease:.%{prerelease}}%{?dist}
|
||||
Release: 4%{?prerelease:.%{prerelease}}%{?dist}
|
||||
|
||||
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
|
||||
License: LGPLv2 with exceptions or GPLv3 with exceptions
|
||||
@ -33,6 +33,15 @@ Patch1: qtdeclarative-opensource-src-5.5.0-no_sse2.patch
|
||||
# https://bugs.kde.org/show_bug.cgi?id=348385
|
||||
Patch2: qtdeclarative-QQuickShaderEffectSource_deadlock.patch
|
||||
|
||||
## upstream patches
|
||||
Patch8: 0008-Fix-crash-when-Canvas-has-negative-width-or-height.patch
|
||||
Patch19: 0019-Revert-Fix-crash-on-QQmlEngine-destruction.patch
|
||||
Patch29: 0029-Avoid-div-by-zero-when-nothing-is-rendered.patch
|
||||
|
||||
## upstream patches under review
|
||||
# Check-for-NULL-from-glGetStrin
|
||||
Patch500: Check-for-NULL-from-glGetString.patch
|
||||
|
||||
Obsoletes: qt5-qtjsbackend < 5.2.0
|
||||
|
||||
BuildRequires: cmake
|
||||
@ -85,6 +94,12 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
%patch1 -p1 -b .no_sse2
|
||||
%patch2 -p1 -b .QQuickShaderEffectSource_deadlock
|
||||
|
||||
%patch8 -p1 -b .0008
|
||||
%patch19 -p1 -b .0019
|
||||
%patch29 -p1 -b .0029
|
||||
|
||||
%patch500 -p1 -b .Check-for-NULL-from-glGetString
|
||||
|
||||
|
||||
%build
|
||||
|
||||
@ -216,6 +231,10 @@ popd
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Mar 25 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.0-4
|
||||
- backport upstream fixes
|
||||
- drop -fno-delete-null-pointer-checks hack (included in qt5-rpm-macros as needed now)
|
||||
|
||||
* Sat Mar 19 2016 Rex Dieter <rdieter@fedoraproject.org> - 5.6.0-3
|
||||
- BR: cmake (cmake autoprovides)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user