xcb: guard crtc before usage

Task-number: QTBUG-131343
Pick-to: 6.5
Change-Id: Ibcf96340e316b6fd667895dcd5d2cd6e4b55e012
Reviewed-by: David Redondo <qt@david-redondo.de>
(cherry picked from commit f8aa1c423e7f878a4a7518438321eb01e552747f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Liang Qi 2024-11-20 12:54:50 +01:00 committed by Qt Cherry-pick Bot
parent 3ffc5ac2a7
commit e8b1644d44

View File

@ -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);
}
}
}
}