From 8ec5df903cc0d1f71bee05475f57aa3a659c324b 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 570e132cd..7e119610a 100644 --- a/panels/dock/taskmanager/treelandwindow.cpp +++ b/panels/dock/taskmanager/treelandwindow.cpp @@ -108,6 +108,7 @@ void ForeignToplevelHandle::treeland_foreign_toplevel_handle_v1_done() } void ForeignToplevelHandle::treeland_foreign_toplevel_handle_v1_closed() { + destroy(); Q_EMIT handlerIsDeleted(); }