Dominique Leuenberger 2017-10-23 14:19:32 +00:00 committed by Git OBS Bridge
parent 81c8d808ca
commit 080f03fa43
7 changed files with 51 additions and 160 deletions

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Sun Oct 8 13:57:42 UTC 2017 - lbeltrame@kde.org
- Update to 5.9.2
* For more details please see:
https://blog.qt.io/blog/2017/10/06/qt-5-9-2-released/
- Dropped patches, now upstream:
* rebuild-qqmldata-propertycache-if-deleted.patch
* support-non-integer-pixel-ratios-qquickwidget.patch
-------------------------------------------------------------------
Wed Aug 9 20:26:28 CEST 2017 - ro@suse.de

View File

@ -21,22 +21,18 @@
%define libname libQtQuick5
Name: libqt5-qtdeclarative
Version: 5.9.1
Version: 5.9.2
Release: 0
Summary: Qt 5 Declarative Library
License: SUSE-LGPL-2.1-with-digia-exception-1.1 or GPL-3.0
Group: Development/Libraries/X11
Url: https://www.qt.io
%define base_name libqt5
%define real_version 5.9.1
%define so_version 5.9.1
%define real_version 5.9.2
%define so_version 5.9.2
%define tar_version qtdeclarative-opensource-src-%{real_version}
Source: https://download.qt.io/official_releases/qt/5.9/%{real_version}/submodules/%{tar_version}.tar.xz
Source1: baselibs.conf
# PATCH-FIX-UPSTREAM
Patch1: support-non-integer-pixel-ratios-qquickwidget.patch
# PATCH-FIX-UPSTREAM
Patch2: rebuild-qqmldata-propertycache-if-deleted.patch
# PATCH-FIX-OPENSUSE sse2_nojit.patch -- enable JIT and sse2 only on sse2 case
Patch100: sse2_nojit.patch
# PATCH-FIX-OPENSUSE
@ -77,8 +73,6 @@ handling.
%prep
%setup -q -n qtdeclarative-opensource-src-%{real_version}
%patch1 -p1
%patch2 -p1
%ifarch %ix86
%patch100 -p1
%endif

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d2fe6c9c1a9f19af6e96553c6d75366ab8f397bc232acd67d31476955fee94ff
size 21387252

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0d40fd4de9c73b9173d8308c0dc37952bf5c747d87ff221962dd2f848d820b08
size 21435732

View File

@ -1,40 +0,0 @@
From ab5d4c78224c9ec79165e8890e5f8b8e838e0709 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Mon, 10 Jul 2017 17:26:59 +0100
Subject: [PATCH] Rebuild QQmlData::propertyCache if deleted by another engine
QQmlData is shared between engines, but the relevant QObjectWrapper is
not. Since 749a7212e903d8e8c6f256edb1836b9449cc7fe1 when a
QObjectWrapper is deleted it resets the shared QQmlData propertyCache.
In most cases the propertyCache except when a property updated in an
existing binding in the first engine, where it currently asserts.
Task-number: QTBUG-61681
Change-Id: I6efdc506e5c7e30b95cda1be282afa9feb781cd2
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
---
src/qml/qml/qqmlbinding.cpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp
index 62288a5..325f752 100644
--- a/src/qml/qml/qqmlbinding.cpp
+++ b/src/qml/qml/qqmlbinding.cpp
@@ -515,7 +515,12 @@ void QQmlBinding::getPropertyData(QQmlPropertyData **propertyData, QQmlPropertyD
Q_ASSERT(propertyData);
QQmlData *data = QQmlData::get(*m_target, false);
- Q_ASSERT(data && data->propertyCache);
+ Q_ASSERT(data);
+
+ if (Q_UNLIKELY(!data->propertyCache)) {
+ data->propertyCache = QQmlEnginePrivate::get(context()->engine)->cache(m_target->metaObject());
+ data->propertyCache->addref();
+ }
*propertyData = data->propertyCache->property(m_targetIndex.coreIndex());
Q_ASSERT(*propertyData);
--
2.7.4

View File

@ -30,10 +30,10 @@ Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
src/quick/scenegraph/qsgwindowsrenderloop.cpp | 10 ++++++++++
10 files changed, 33 insertions(+), 2 deletions(-)
Index: qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
--- qtdeclarative-opensource-src-5.9.2.orig/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/plugins/scenegraph/d3d12/qsgd3d12renderloop.cpp
@@ -461,7 +461,6 @@ void QSGD3D12RenderLoop::renderWindow(QQ
data.rc->initialize(nullptr);
@ -42,10 +42,10 @@ Index: qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/d3d12/qsgd3d12r
if (profileFrames)
syncTime = renderTimer.nsecsElapsed();
Index: qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
--- qtdeclarative-opensource-src-5.9.2.orig/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/plugins/scenegraph/d3d12/qsgd3d12threadedrenderloop.cpp
@@ -410,7 +410,6 @@ bool QSGD3D12RenderThread::event(QEvent
QQuickWindowPrivate *wd = QQuickWindowPrivate::get(wme->window);
rc->initialize(nullptr);
@ -62,10 +62,10 @@ Index: qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/d3d12/qsgd3d12t
if (!hadRenderer && wd->renderer) {
if (Q_UNLIKELY(debug_loop()))
Index: qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
--- qtdeclarative-opensource-src-5.9.2.orig/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/plugins/scenegraph/openvg/qsgopenvgrenderloop.cpp
@@ -205,7 +205,6 @@ void QSGOpenVGRenderLoop::renderWindow(Q
emit window->afterAnimating();
@ -74,10 +74,10 @@ Index: qtdeclarative-opensource-src-5.9.1/src/plugins/scenegraph/openvg/qsgopenv
if (profileFrames)
syncTime = renderTimer.nsecsElapsed();
Index: qtdeclarative-opensource-src-5.9.1/src/quick/items/qquickrendercontrol.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/quick/items/qquickrendercontrol.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/quick/items/qquickrendercontrol.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/quick/items/qquickrendercontrol.cpp
--- qtdeclarative-opensource-src-5.9.2.orig/src/quick/items/qquickrendercontrol.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/quick/items/qquickrendercontrol.cpp
@@ -284,7 +284,6 @@ bool QQuickRenderControl::sync()
QQuickWindowPrivate *cd = QQuickWindowPrivate::get(d->window);
@ -102,10 +102,10 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/items/qquickrendercontrol.cp
render();
softwareRenderer->setCurrentPaintDevice(prevDev);
}
Index: qtdeclarative-opensource-src-5.9.1/src/quick/items/qquickwindow.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/quick/items/qquickwindow.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/quick/items/qquickwindow.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/quick/items/qquickwindow.cpp
--- qtdeclarative-opensource-src-5.9.2.orig/src/quick/items/qquickwindow.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/quick/items/qquickwindow.cpp
@@ -432,8 +432,10 @@ void QQuickWindowPrivate::syncSceneGraph
emit q->afterSynchronizing();
@ -117,10 +117,10 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/items/qquickwindow.cpp
void QQuickWindowPrivate::renderSceneGraph(const QSize &size)
{
QML_MEMORY_SCOPE_STRING("SceneGraph");
Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
--- qtdeclarative-opensource-src-5.9.2.orig/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderloop.cpp
@@ -149,7 +149,6 @@ void QSGSoftwareRenderLoop::renderWindow
emit window->afterAnimating();
@ -129,10 +129,10 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/adaptations/softw
if (profileFrames)
syncTime = renderTimer.nsecsElapsed();
Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
--- qtdeclarative-opensource-src-5.9.2.orig/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/adaptations/software/qsgsoftwarethreadedrenderloop.cpp
@@ -330,7 +330,6 @@ bool QSGSoftwareRenderThread::event(QEve
softwareRenderer->setBackingStore(backingStore);
rc->initialize(nullptr);
@ -149,11 +149,11 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/adaptations/softw
if (!hadRenderer && wd->renderer) {
qCDebug(QSG_RASTER_LOG_RENDERLOOP, "RT - created renderer");
Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgrenderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/qsgrenderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/quick/scenegraph/qsgrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgrenderloop.cpp
@@ -380,16 +380,6 @@ void QSGGuiThreadRenderLoop::renderWindo
--- qtdeclarative-opensource-src-5.9.2.orig/src/quick/scenegraph/qsgrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/qsgrenderloop.cpp
@@ -381,16 +381,6 @@ void QSGGuiThreadRenderLoop::renderWindo
bool alsoSwap = data.updatePending;
data.updatePending = false;
@ -170,7 +170,7 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgrenderloop.cpp
if (!current)
return;
@@ -417,8 +407,6 @@ void QSGGuiThreadRenderLoop::renderWindo
@@ -418,8 +408,6 @@ void QSGGuiThreadRenderLoop::renderWindo
emit window->afterAnimating();
cd->syncSceneGraph();
@ -179,11 +179,11 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgrenderloop.cpp
if (profileFrames)
syncTime = renderTimer.nsecsElapsed();
Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgthreadedrenderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/qsgthreadedrenderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/quick/scenegraph/qsgthreadedrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgthreadedrenderloop.cpp
@@ -425,7 +425,6 @@ bool QSGRenderThread::event(QEvent *e)
--- qtdeclarative-opensource-src-5.9.2.orig/src/quick/scenegraph/qsgthreadedrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/qsgthreadedrenderloop.cpp
@@ -432,7 +432,6 @@ bool QSGRenderThread::event(QEvent *e)
qCDebug(QSG_LOG_RENDERLOOP) << QSG_RT_PAD << "- sync scene graph";
QQuickWindowPrivate *d = QQuickWindowPrivate::get(ce->window);
d->syncSceneGraph();
@ -191,11 +191,11 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgthreadedrender
qCDebug(QSG_LOG_RENDERLOOP) << QSG_RT_PAD << "- rendering scene graph";
QQuickWindowPrivate::get(ce->window)->renderSceneGraph(ce->window->size());
Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgwindowsrenderloop.cpp
Index: qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/qsgwindowsrenderloop.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.1.orig/src/quick/scenegraph/qsgwindowsrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgwindowsrenderloop.cpp
@@ -445,14 +445,6 @@ void QSGWindowsRenderLoop::renderWindow(
--- qtdeclarative-opensource-src-5.9.2.orig/src/quick/scenegraph/qsgwindowsrenderloop.cpp
+++ qtdeclarative-opensource-src-5.9.2/src/quick/scenegraph/qsgwindowsrenderloop.cpp
@@ -446,14 +446,6 @@ void QSGWindowsRenderLoop::renderWindow(
}
}
@ -210,7 +210,7 @@ Index: qtdeclarative-opensource-src-5.9.1/src/quick/scenegraph/qsgwindowsrenderl
d->flushFrameSynchronousEvents();
// Event delivery or processing has caused the window to stop rendering.
if (!windowData(window))
@@ -472,8 +464,6 @@ void QSGWindowsRenderLoop::renderWindow(
@@ -473,8 +465,6 @@ void QSGWindowsRenderLoop::renderWindow(
RLDEBUG(" - syncing");
d->syncSceneGraph();

View File

@ -1,73 +0,0 @@
From dfce0a8feceeb7156eba6ac5d8d3521e3009a583 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Wed, 21 Jun 2017 09:03:22 +0200
Subject: [PATCH] Support non-integer pixel-ratio in QQuickWidget
Non-integer pixel-ratios always resulted in blurry rendering when
QQuickWidget was used, but not with QQuickWindow. Fixed by reading qreal
accessor of devicePixelRatio instead.
Change-Id: I49f5efcf2da2efc090c00017e68c99c857cd84ef
Task-number: QTBUG-61502
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
---
src/quickwidgets/qquickwidget.cpp | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
Index: qtdeclarative-opensource-src-5.9.0/src/quickwidgets/qquickwidget.cpp
===================================================================
--- qtdeclarative-opensource-src-5.9.0.orig/src/quickwidgets/qquickwidget.cpp
+++ qtdeclarative-opensource-src-5.9.0/src/quickwidgets/qquickwidget.cpp
@@ -913,9 +913,9 @@ void QQuickWidget::createFramebufferObje
d->offscreenWindow->setGeometry(globalPos.x(), globalPos.y(), width(), height());
if (d->useSoftwareRenderer) {
- const QSize imageSize = size() * devicePixelRatio();
+ const QSize imageSize = size() * devicePixelRatioF();
d->softwareImage = QImage(imageSize, QImage::Format_ARGB32_Premultiplied);
- d->softwareImage.setDevicePixelRatio(devicePixelRatio());
+ d->softwareImage.setDevicePixelRatio(devicePixelRatioF());
return;
}
@@ -960,7 +960,7 @@ void QQuickWidget::createFramebufferObje
format.setInternalTextureFormat(GL_SRGB8_ALPHA8_EXT);
#endif
- const QSize fboSize = size() * devicePixelRatio();
+ const QSize fboSize = size() * devicePixelRatioF();
// Could be a simple hide - show, in which case the previous fbo is just fine.
if (!d->fbo || d->fbo->size() != fboSize) {
@@ -1181,7 +1181,7 @@ void QQuickWidget::resizeEvent(QResizeEv
// Software Renderer
if (d->useSoftwareRenderer) {
needsSync = true;
- if (d->softwareImage.size() != size() * devicePixelRatio()) {
+ if (d->softwareImage.size() != size() * devicePixelRatioF()) {
createFramebufferObject();
}
} else {
@@ -1191,7 +1191,7 @@ void QQuickWidget::resizeEvent(QResizeEv
// during hide - resize - show sequences and also during application exit.
if (!d->fbo && !d->offscreenWindow->openglContext())
return;
- if (!d->fbo || d->fbo->size() != size() * devicePixelRatio()) {
+ if (!d->fbo || d->fbo->size() != size() * devicePixelRatioF()) {
needsSync = true;
createFramebufferObject();
}
@@ -1604,10 +1604,12 @@ void QQuickWidget::paintEvent(QPaintEven
//Paint everything
painter.drawImage(rect(), d->softwareImage);
} else {
+ QTransform transform;
+ transform.scale(devicePixelRatioF(), devicePixelRatioF());
//Paint only the updated areas
const auto rects = d->updateRegion.rects();
for (auto targetRect : rects) {
- auto sourceRect = QRect(targetRect.topLeft() * devicePixelRatio(), targetRect.size() * devicePixelRatio());
+ auto sourceRect = transform.mapRect(QRectF(targetRect));
painter.drawImage(targetRect, d->softwareImage, sourceRect);
}
d->updateRegion = QRegion();