From c9d34d0c64e865ee122980c6c111eee0cd142200 Mon Sep 17 00:00:00 2001 From: LFRon Date: Sun, 7 Jun 2026 15:49:59 +0800 Subject: [PATCH] fix: destroy wayland proxy before cleanup to prevent use-after-free crash Call destroy() on the treeland_foreign_toplevel_handle_v1 proxy before emitting handlerIsDeleted() to stop the compositor from sending further events to a handle scheduled for C++ destruction. Without this, pending state events could arrive after the ForeignToplevelHandle object is freed by QScopedPointer, causing a crash in m_states.append() when activating applications from the system tray. --- panels/dock/taskmanager/treelandwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/panels/dock/taskmanager/treelandwindow.cpp b/panels/dock/taskmanager/treelandwindow.cpp index 9517e3add..36b7619a4 100644 --- a/panels/dock/taskmanager/treelandwindow.cpp +++ b/panels/dock/taskmanager/treelandwindow.cpp @@ -107,6 +107,7 @@ void ForeignToplevelHandle::treeland_foreign_toplevel_handle_v1_done() } void ForeignToplevelHandle::treeland_foreign_toplevel_handle_v1_closed() { + destroy(); Q_EMIT handlerIsDeleted(); }