From 063299d8520ca5c944a596723e63e7654e712955 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Mon, 28 Aug 2017 12:58:55 +0200 Subject: qtwaylandscanner: Remove globals when destroying wrappers When globals are destroyed on the compositor side, send the "global_remove" event and set the resource implementation to nullptr so all further requests are ignored. This also adds a compositor test to see if outputs are removed when they are deleted. Change-Id: Ib77a4c3d4c2c93283a14ac20f5964e2ce08a1d38 Reviewed-by: David Edmundson Reviewed-by: Paul Olav Tvete --- tests/auto/compositor/compositor/tst_compositor.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tests/auto/compositor/compositor/tst_compositor.cpp') diff --git a/tests/auto/compositor/compositor/tst_compositor.cpp b/tests/auto/compositor/compositor/tst_compositor.cpp index c54903dc0..39ae1d48c 100644 --- a/tests/auto/compositor/compositor/tst_compositor.cpp +++ b/tests/auto/compositor/compositor/tst_compositor.cpp @@ -64,6 +64,7 @@ private slots: void sizeFollowsWindow(); void mapSurface(); void frameCallback(); + void removeOutput(); void advertisesXdgShellSupport(); void createsXdgSurfaces(); @@ -375,6 +376,22 @@ void tst_WaylandCompositor::frameCallback() wl_surface_destroy(surface); } +void tst_WaylandCompositor::removeOutput() +{ + TestCompositor compositor; + QWindow window; + window.resize(800, 600); + auto output = new QWaylandOutput(&compositor, &window); + + compositor.create(); + MockClient client; + QTRY_COMPARE(client.m_outputs.size(), 2); + + delete output; + compositor.flushClients(); + QTRY_COMPARE(client.m_outputs.size(), 1); +} + void tst_WaylandCompositor::seatCapabilities() { TestCompositor compositor; -- cgit v1.2.3