diff --git a/src/plugins/platforms/wayland/qwaylanddisplay.cpp b/src/plugins/platforms/wayland/qwaylanddisplay.cpp index 41bdf6b056b..53f5cfcea44 100644 --- a/src/plugins/platforms/wayland/qwaylanddisplay.cpp +++ b/src/plugins/platforms/wayland/qwaylanddisplay.cpp @@ -167,13 +167,11 @@ QWaylandDisplay::~QWaylandDisplay(void) if (mSyncCallback) wl_callback_destroy(mSyncCallback); - qDeleteAll(mInputDevices); - mInputDevices.clear(); + qDeleteAll(qExchange(mInputDevices, {})); - foreach (QWaylandScreen *screen, mScreens) { + for (QWaylandScreen *screen : qExchange(mScreens, {})) { QWindowSystemInterface::handleScreenRemoved(screen); } - mScreens.clear(); qDeleteAll(mWaitingScreens); #if QT_CONFIG(wayland_datadevice) diff --git a/tests/auto/wayland/shared_old/mocksurface.cpp b/tests/auto/wayland/shared_old/mocksurface.cpp index 81a5edbd05f..e9df5f90750 100644 --- a/tests/auto/wayland/shared_old/mocksurface.cpp +++ b/tests/auto/wayland/shared_old/mocksurface.cpp @@ -149,11 +149,10 @@ void Surface::surface_commit(Resource *resource) } } - foreach (wl_resource *frameCallback, m_frameCallbackList) { + for (wl_resource *frameCallback : qExchange(m_frameCallbackList, {})) { wl_callback_send_done(frameCallback, m_compositor->time()); wl_resource_destroy(frameCallback); } - m_frameCallbackList.clear(); } }