From e3b2386dd7d3078b398c76a2715e3ff318223982 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 1 Mar 2024 15:53:48 +0100 Subject: [PATCH] drm: atomic: Avoid device busy when flipping after creating a new window Task-number: QTBUG-122663 Change-Id: I168930428e8d09a9a042401460d678e20f3b82d5 Pick-to: 6.6 6.5 Reviewed-by: Andy Nichols (cherry picked from commit 0a3b5042a566afa4dc5162f469eb0d8be3120933) Reviewed-by: Qt Cherry-pick Bot --- .../deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp index 6bda149fff3..336ee9c312f 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp @@ -176,10 +176,14 @@ gbm_surface *QEglFSKmsGbmScreen::createSurface(EGLConfig eglConfig) void QEglFSKmsGbmScreen::resetSurface() { - m_flipPending = false; + m_flipPending = false; // not necessarily true but enough to keep bo_next m_gbm_bo_current = nullptr; - m_gbm_bo_next = nullptr; m_gbm_surface = nullptr; + + // Leave m_gbm_bo_next untouched. waitForFlip() should + // still do its work, when called. Otherwise we end up + // in device-is-busy errors if there is a new QWindow + // created afterwards. (QTBUG-122663) } void QEglFSKmsGbmScreen::initCloning(QPlatformScreen *screenThisScreenClones,