Hello community,

here is the log from the commit of package libqt5-qtdeclarative for 
openSUSE:Factory checked in at 2017-06-30 18:38:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtdeclarative (Old)
 and      /work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt5-qtdeclarative"

Fri Jun 30 18:38:35 2017 rev:38 rq:505873 version:5.9.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/libqt5-qtdeclarative/libqt5-qtdeclarative.changes    
    2017-06-13 16:02:07.801202168 +0200
+++ 
/work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new/libqt5-qtdeclarative.changes
   2017-06-30 18:38:38.129581166 +0200
@@ -1,0 +2,6 @@
+Fri Jun 23 11:46:39 UTC 2017 - [email protected]
+
+- Add upstream patch support-non-integer-pixel-ratios-qquickwidget.patch
+  * Add support for non-integer scaling to QQuickWidget (QTBUG-61502)
+
+-------------------------------------------------------------------

New:
----
  support-non-integer-pixel-ratios-qquickwidget.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libqt5-qtdeclarative.spec ++++++
--- /var/tmp/diff_new_pack.uvLYLM/_old  2017-06-30 18:38:39.665365149 +0200
+++ /var/tmp/diff_new_pack.uvLYLM/_new  2017-06-30 18:38:39.669364587 +0200
@@ -33,6 +33,8 @@
 %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-OPENSUSE sse2_nojit.patch -- enable JIT and sse2 only on sse2 case
 Patch100:       sse2_nojit.patch
 BuildRequires:  fdupes
@@ -74,6 +76,7 @@
 %ifarch %ix86
 %patch100 -p1
 %endif
+%patch1 -p1
 
 %package -n %libname
 Summary:        Qt 5 Declarative Library

++++++ support-non-integer-pixel-ratios-qquickwidget.patch ++++++
>From dfce0a8feceeb7156eba6ac5d8d3521e3009a583 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <[email protected]>
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 <[email protected]>
---
 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();

Reply via email to