diff --git a/src/plugins/platforms/wayland/qwaylanddisplay.cpp b/src/plugins/platforms/wayland/qwaylanddisplay.cpp index 023050326e7..a4d13db7178 100644 --- a/src/plugins/platforms/wayland/qwaylanddisplay.cpp +++ b/src/plugins/platforms/wayland/qwaylanddisplay.cpp @@ -168,7 +168,9 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration) QWaylandDisplay::~QWaylandDisplay(void) { - qDeleteAll(mScreens); + foreach (QWaylandScreen *screen, mScreens) { + mWaylandIntegration->destroyScreen(screen); + } mScreens.clear(); delete mDndSelectionHandler.take(); mEventThread->quit(); @@ -291,8 +293,8 @@ void QWaylandDisplay::registry_global_remove(uint32_t id) if (global.interface == QStringLiteral("wl_output")) { foreach (QWaylandScreen *screen, mScreens) { if (screen->outputId() == id) { - delete screen; mScreens.removeOne(screen); + mWaylandIntegration->destroyScreen(screen); break; } }