Accepting request 560601 from KDE:Qt5
- Add patch to fix crash if X RanR is not present (boo#1073572): * 0001-xcb-verify-if-xrandr-present-before-using-xcb_randr-.patch OBS-URL: https://build.opensuse.org/request/show/560601 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=72
This commit is contained in:
parent
69da80a0af
commit
efd30deb02
@ -0,0 +1,73 @@
|
||||
From 79d78d814acad4e183e281aea9b131f396abe3fb Mon Sep 17 00:00:00 2001
|
||||
From: Gatis Paeglis <gatis.paeglis@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.agocs@qt.io>
|
||||
Reviewed-by: Uli Schlachter <psychon@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
|
||||
|
@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 29 18:19:46 UTC 2017 - fabian@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
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 20 10:41:16 UTC 2017 - alarrosa@suse.com
|
||||
|
||||
|
@ -66,6 +66,7 @@ Patch15: force-cmake-private-headers.patch
|
||||
# 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 @@ handling.
|
||||
%patch12 -p1
|
||||
%patch15 -p1
|
||||
%patch17 -p1
|
||||
%patch1000 -p1
|
||||
%patch2000 -p1
|
||||
%patch2001 -p1
|
||||
%patch2002 -p1
|
||||
|
Loading…
Reference in New Issue
Block a user