xcb: Ignore disabling of outputs in the middle of the mode switch
This commit is contained in:
parent
19c78c8b79
commit
e6f1e5fdc7
@ -0,0 +1,56 @@
|
|||||||
|
From ae51e360f986698eaf41fdb38f8a878a50f69be1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
||||||
|
Date: Fri, 19 Jun 2015 13:34:11 +0300
|
||||||
|
Subject: [PATCH 197/412] xcb: Ignore disabling of outputs in the middle of the
|
||||||
|
mode switch
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
X server may send RROutputChangeNotify event with null crtc and mode,
|
||||||
|
when it switches an output mode. Request RROutputInfo to distinguish
|
||||||
|
this case from the case when the output is explicitly disabled.
|
||||||
|
|
||||||
|
Change-Id: I4c2356ec71dbcc8013009ea8a6f46dd11f19d6bb
|
||||||
|
Task-number: QTBUG-44158
|
||||||
|
Task-number: QTBUG-46786
|
||||||
|
Task-number: QTBUG-46822
|
||||||
|
Reviewed-by: Daniel Vrátil <dvratil@redhat.com>
|
||||||
|
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
||||||
|
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
|
||||||
|
---
|
||||||
|
src/plugins/platforms/xcb/qxcbconnection.cpp | 18 +++++++++++++-----
|
||||||
|
1 file changed, 13 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||||
|
index 0867615..29e1fd1 100644
|
||||||
|
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||||
|
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||||||
|
@@ -265,11 +265,19 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event)
|
||||||
|
} else if (screen) {
|
||||||
|
// Screen has been disabled -> remove
|
||||||
|
if (output.crtc == XCB_NONE && output.mode == XCB_NONE) {
|
||||||
|
- qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled";
|
||||||
|
- m_screens.removeOne(screen);
|
||||||
|
- foreach (QXcbScreen *otherScreen, m_screens)
|
||||||
|
- otherScreen->removeVirtualSibling((QPlatformScreen *) screen);
|
||||||
|
- QXcbIntegration::instance()->destroyScreen(screen);
|
||||||
|
+ xcb_randr_get_output_info_cookie_t outputInfoCookie =
|
||||||
|
+ xcb_randr_get_output_info(xcb_connection(), output.output, output.config_timestamp);
|
||||||
|
+ QScopedPointer<xcb_randr_get_output_info_reply_t, QScopedPointerPodDeleter> outputInfo(
|
||||||
|
+ xcb_randr_get_output_info_reply(xcb_connection(), outputInfoCookie, NULL));
|
||||||
|
+ if (outputInfo->crtc == XCB_NONE) {
|
||||||
|
+ qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled";
|
||||||
|
+ m_screens.removeOne(screen);
|
||||||
|
+ foreach (QXcbScreen *otherScreen, m_screens)
|
||||||
|
+ otherScreen->removeVirtualSibling((QPlatformScreen *) screen);
|
||||||
|
+ QXcbIntegration::instance()->destroyScreen(screen);
|
||||||
|
+ } else {
|
||||||
|
+ qCDebug(lcQpaScreen) << "output" << screen->name() << "has been temporarily disabled for the mode switch";
|
||||||
|
+ }
|
||||||
|
} else {
|
||||||
|
// Just update existing screen
|
||||||
|
screen->updateGeometry(output.config_timestamp);
|
||||||
|
--
|
||||||
|
2.5.0
|
||||||
|
|
@ -116,6 +116,8 @@ Patch101: qt5-qtbase-QTBUG-47041.patch
|
|||||||
#SM_CLIENT_ID property is not set
|
#SM_CLIENT_ID property is not set
|
||||||
Patch223: 0123-xcb-set-SM_CLIENT_ID-property.patch
|
Patch223: 0123-xcb-set-SM_CLIENT_ID-property.patch
|
||||||
|
|
||||||
|
Patch297: 0197-xcb-Ignore-disabling-of-outputs-in-the-middle-of-the.patch
|
||||||
|
|
||||||
# https://bugs.kde.org/show_bug.cgi?id=344469
|
# https://bugs.kde.org/show_bug.cgi?id=344469
|
||||||
Patch155: 0055-Respect-manual-set-icon-themes.patch
|
Patch155: 0055-Respect-manual-set-icon-themes.patch
|
||||||
|
|
||||||
@ -392,6 +394,7 @@ rm -fv mkspecs/linux-g++*/qmake.conf.multilib-optflags
|
|||||||
%patch101 -p1 -b .QTBUG-47041
|
%patch101 -p1 -b .QTBUG-47041
|
||||||
%patch155 -p1 -b .0055
|
%patch155 -p1 -b .0055
|
||||||
%patch223 -p1 -b .QTBUG-46310
|
%patch223 -p1 -b .QTBUG-46310
|
||||||
|
%patch297 -p1 -b .0197
|
||||||
|
|
||||||
# drop -fexceptions from $RPM_OPT_FLAGS
|
# drop -fexceptions from $RPM_OPT_FLAGS
|
||||||
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
|
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed 's|-fexceptions||g'`
|
||||||
@ -950,6 +953,7 @@ fi
|
|||||||
%changelog
|
%changelog
|
||||||
* Mon Oct 05 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-18
|
* Mon Oct 05 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-18
|
||||||
- When a screen comes back online, the windows need to be told about it (QTBUG-47041)
|
- When a screen comes back online, the windows need to be told about it (QTBUG-47041)
|
||||||
|
- xcb: Ignore disabling of outputs in the middle of the mode switch
|
||||||
|
|
||||||
* Wed Aug 19 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-17
|
* Wed Aug 19 2015 Rex Dieter <rdieter@fedoraproject.org> 5.5.0-17
|
||||||
- unconditionally undo valgrind hack when done (#1255054)
|
- unconditionally undo valgrind hack when done (#1255054)
|
||||||
|
Loading…
Reference in New Issue
Block a user