From e90657f429639983defd7556768a4f71909d13b6 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Mon, 17 Apr 2023 13:37:47 +0200 Subject: QWaylandWindow: Init parent wl_surface when creating subsurface Fixes recreating subsurfaces after hiding and then again showing the window. Change-Id: I2e3e7ceb42ec6b25cb64db260dfb74f6ebb10d27 Reviewed-by: David Edmundson (cherry picked from commit d06d66fad70d7c61559211b6f489b94d1c3a8a05) Reviewed-by: Qt Cherry-pick Bot --- src/client/qwaylandwindow.cpp | 2 ++ tests/auto/client/surface/tst_surface.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp index d2199df4..bb1d944c 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -125,6 +125,8 @@ void QWaylandWindow::initWindow() Q_ASSERT(!mSubSurfaceWindow); auto *parent = static_cast(QPlatformWindow::parent()); + if (!parent->mSurface) + parent->initializeWlSurface(); if (parent->wlSurface()) { if (::wl_subsurface *subsurface = mDisplay->createSubSurface(this, parent)) mSubSurfaceWindow = new QWaylandSubSurface(this, parent, subsurface); diff --git a/tests/auto/client/surface/tst_surface.cpp b/tests/auto/client/surface/tst_surface.cpp index 083bc4fa..b583390f 100644 --- a/tests/auto/client/surface/tst_surface.cpp +++ b/tests/auto/client/surface/tst_surface.cpp @@ -199,6 +199,10 @@ void tst_surface::createSubsurfaceForHiddenParent() // Make sure the client doesn't quit before it has a chance to crash xdgPingAndWaitForPong(); + + // Make sure the subsurface was actually created + const Subsurface *subsurface = exec([=] {return subSurface(0);}); + QVERIFY(subsurface); } QCOMPOSITOR_TEST_MAIN(tst_surface) -- cgit v1.2.1