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