Hello community,

here is the log from the commit of package libqt5-qtbase for openSUSE:Factory 
checked in at 2018-01-02 16:32:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtbase (Old)
 and      /work/SRC/openSUSE:Factory/.libqt5-qtbase.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt5-qtbase"

Tue Jan  2 16:32:51 2018 rev:72 rq:560601 version:5.10.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt5-qtbase/libqt5-qtbase.changes      
2017-12-23 12:15:53.318108733 +0100
+++ /work/SRC/openSUSE:Factory/.libqt5-qtbase.new/libqt5-qtbase.changes 
2018-01-02 16:32:55.053895202 +0100
@@ -1,0 +2,6 @@
+Fri Dec 29 18:19:46 UTC 2017 - fab...@ritter-vogt.de
+
+- Add patch to fix crash if X RanR is not present (boo#1073572):
+  * 0001-xcb-verify-if-xrandr-present-before-using-xcb_randr-.patch
+
+-------------------------------------------------------------------

New:
----
  0001-xcb-verify-if-xrandr-present-before-using-xcb_randr-.patch

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

Other differences:
------------------
++++++ libqt5-qtbase.spec ++++++
--- /var/tmp/diff_new_pack.ZobT5j/_old  2018-01-02 16:32:57.784984468 +0100
+++ /var/tmp/diff_new_pack.ZobT5j/_new  2018-01-02 16:32:57.788983135 +0100
@@ -66,6 +66,7 @@
 # PATCH-FIX-UPSTREAM
 Patch17:        qapplication-emit-palettechanged.patch
 # patches 1000- 2000 and above from upstream 5.10 branch #
+Patch1000:      0001-xcb-verify-if-xrandr-present-before-using-xcb_randr-.patch
 # patches 2000-3000 and above from upstream 5.11/dev branch #
 Patch2000:      0001-Remove-QPrintDialogPrivate-applyPrinterProperties-no.patch
 Patch2001:      0002-Remove-QUnixPrintWidgetPrivate-applyPrinterPropertie.patch
@@ -170,6 +171,7 @@
 %patch12 -p1
 %patch15 -p1
 %patch17 -p1
+%patch1000 -p1
 %patch2000 -p1
 %patch2001 -p1
 %patch2002 -p1

++++++ 0001-xcb-verify-if-xrandr-present-before-using-xcb_randr-.patch ++++++
>From 79d78d814acad4e183e281aea9b131f396abe3fb Mon Sep 17 00:00:00 2001
From: Gatis Paeglis <gatis.paeg...@qt.io>
Date: Thu, 7 Dec 2017 11:49:49 +0100
Subject: [PATCH] xcb: verify if xrandr present before using xcb_randr* APIs

Not doing so might break the connection. We have had similar
issues before, e.g. QTBUG-45312.

Change-Id: I95f15d24773fc92b052578bd72d1ba264d0a5f63
Reviewed-by: Laszlo Agocs <laszlo.ag...@qt.io>
Reviewed-by: Uli Schlachter <psyc...@znc.in>
---
 src/plugins/platforms/xcb/qxcbscreen.cpp | 35 +++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp 
b/src/plugins/platforms/xcb/qxcbscreen.cpp
index ec0f9ba561..67c96b2d80 100644
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -446,17 +446,24 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, 
QXcbVirtualDesktop *virtualDe
 
     m_cursor = new QXcbCursor(connection, this);
 
-    // Parse EDID
-    if (m_edid.parse(getEdid()))
-        qCDebug(lcQpaScreen, "EDID data for output \"%s\": identifier '%s', 
manufacturer '%s', model '%s', serial '%s', physical size: %.2fx%.2f",
-                name().toLatin1().constData(),
-                m_edid.identifier.toLatin1().constData(),
-                m_edid.manufacturer.toLatin1().constData(),
-                m_edid.model.toLatin1().constData(),
-                m_edid.serialNumber.toLatin1().constData(),
-                m_edid.physicalSize.width(), m_edid.physicalSize.height());
-    else
-        qCDebug(lcQpaScreen) << "Failed to parse EDID data for output" << 
name(); // keep this debug, not warning
+    if (connection->hasXRandr()) { // Parse EDID
+        QByteArray edid = getEdid();
+        if (m_edid.parse(edid)) {
+            qCDebug(lcQpaScreen, "EDID data for output \"%s\": identifier 
'%s', manufacturer '%s',"
+                                 "model '%s', serial '%s', physical size: 
%.2fx%.2f",
+                    name().toLatin1().constData(),
+                    m_edid.identifier.toLatin1().constData(),
+                    m_edid.manufacturer.toLatin1().constData(),
+                    m_edid.model.toLatin1().constData(),
+                    m_edid.serialNumber.toLatin1().constData(),
+                    m_edid.physicalSize.width(), m_edid.physicalSize.height());
+        } else {
+            // This property is defined by the xrandr spec. Parsing failure 
indicates a valid error,
+            // but keep this as debug, for details see 
4f515815efc318ddc909a0399b71b8a684962f38.
+            qCDebug(lcQpaScreen) << "Failed to parse EDID data for output" << 
name() <<
+                                    "edid data: " << edid;
+        }
+    }
 }
 
 QXcbScreen::~QXcbScreen()
@@ -899,9 +906,13 @@ QByteArray QXcbScreen::getOutputProperty(xcb_atom_t atom) 
const
 
 QByteArray QXcbScreen::getEdid() const
 {
+    QByteArray result;
+    if (!connection()->hasXRandr())
+        return result;
+
     // Try a bunch of atoms
     xcb_atom_t atom = connection()->internAtom("EDID");
-    QByteArray result = getOutputProperty(atom);
+    result = getOutputProperty(atom);
     if (result.isEmpty()) {
         atom = connection()->internAtom("EDID_DATA");
         result = getOutputProperty(atom);
-- 
2.15.0


Reply via email to