forked from pool/libqt5-qtbase
44 lines
2.0 KiB
Diff
44 lines
2.0 KiB
Diff
|
From a148affea7763395ce503f695ddb6c7b4c1e4b08 Mon Sep 17 00:00:00 2001
|
||
|
From: Alexander Volkov <a.volkov@rusbitech.ru>
|
||
|
Date: Fri, 8 Apr 2016 18:50:15 +0300
|
||
|
Subject: [PATCH 13/16] xcb: Fix interpretation of the size from
|
||
|
RRCrtcChangeNotify
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
The size in RRCrtcChangeNotify is a size of the mode and it is
|
||
|
not rotated. At the same time when we call RRGetCrtcInfo, it
|
||
|
returns a rotated size, which is then passed to
|
||
|
QXcbScreen::updateGeometry(const QRect &geom, uint8_t rotation).
|
||
|
|
||
|
So to pass the expected size to QXcbScreen::updateGeometry()
|
||
|
after receiving RRCrtcChangeNotify, we should rotate the size
|
||
|
according the screen rotation.
|
||
|
|
||
|
Change-Id: If5b5b52403b077d3cd64b9a05d938bb9ac00b1e0
|
||
|
Reviewed-by: Daniel Vrátil <daniel.vratil@kdab.com>
|
||
|
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
||
|
(cherry picked from commit d8667fde189fa08002295fc66414d67e73b3c67b)
|
||
|
---
|
||
|
src/plugins/platforms/xcb/qxcbconnection.cpp | 3 +++
|
||
|
1 file changed, 3 insertions(+)
|
||
|
|
||
|
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||
|
index aeb730670d62b3ce2239fba48b58ccb4752e912d..9f170b095926501b91a20f401284c6c6149a07ab 100644
|
||
|
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||
|
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
|
||
|
@@ -209,6 +209,9 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event)
|
||
|
// CRTC with node mode could mean that output has been disabled, and we'll
|
||
|
// get RRNotifyOutputChange notification for that.
|
||
|
if (screen && crtc.mode) {
|
||
|
+ if (crtc.rotation == XCB_RANDR_ROTATION_ROTATE_90 ||
|
||
|
+ crtc.rotation == XCB_RANDR_ROTATION_ROTATE_270)
|
||
|
+ std::swap(crtc.width, crtc.height);
|
||
|
screen->updateGeometry(QRect(crtc.x, crtc.y, crtc.width, crtc.height), crtc.rotation);
|
||
|
if (screen->mode() != crtc.mode)
|
||
|
screen->updateRefreshRate(crtc.mode);
|
||
|
--
|
||
|
2.6.6
|
||
|
|