From e8b1644d4435987f22b5cfea93238144d232cb86 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Wed, 20 Nov 2024 12:54:50 +0100 Subject: [PATCH] xcb: guard crtc before usage Task-number: QTBUG-131343 Pick-to: 6.5 Change-Id: Ibcf96340e316b6fd667895dcd5d2cd6e4b55e012 Reviewed-by: David Redondo (cherry picked from commit f8aa1c423e7f878a4a7518438321eb01e552747f) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/platforms/xcb/qxcbscreen.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp index 0ce337726e7..2f0061544fa 100644 --- a/src/plugins/platforms/xcb/qxcbscreen.cpp +++ b/src/plugins/platforms/xcb/qxcbscreen.cpp @@ -654,12 +654,16 @@ void QXcbScreen::setMonitor(xcb_randr_monitor_info_t *monitorInfo, xcb_timestamp if (m_crtcs.size() == 1) { auto crtc = Q_XCB_REPLY(xcb_randr_get_crtc_info, xcb_connection(), m_crtcs[0], timestamp); - m_singlescreen = (monitorGeometry == (QRect(crtc->x, crtc->y, crtc->width, crtc->height))); - if (m_singlescreen) { - if (crtc->mode) { - updateGeometry(QRect(crtc->x, crtc->y, crtc->width, crtc->height), crtc->rotation); - if (mode() != crtc->mode) - updateRefreshRate(crtc->mode); + if (crtc == XCB_NONE) { + qCDebug(lcQpaScreen, "Didn't get crtc info when m_crtcs.size() == 1"); + } else { + m_singlescreen = (monitorGeometry == (QRect(crtc->x, crtc->y, crtc->width, crtc->height))); + if (m_singlescreen) { + if (crtc->mode) { + updateGeometry(QRect(crtc->x, crtc->y, crtc->width, crtc->height), crtc->rotation); + if (mode() != crtc->mode) + updateRefreshRate(crtc->mode); + } } } }