From fe12ad79f4338c98fc7fd4f8415f6e50438cc7d5 Mon Sep 17 00:00:00 2001 From: Wang Zichong Date: Thu, 11 Jun 2026 15:46:22 +0800 Subject: [PATCH] fix: use sigkill for wayland killClient() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前 wayland 下强行停止进程的实现和关闭窗口一样,可能会导致一些程序 无法被强行停止. 现在改用使用 pid 并发送 SIGKILL 的方式强行停止进程 PMS: BUG-364201 Log: --- panels/dock/taskmanager/treelandwindow.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/panels/dock/taskmanager/treelandwindow.cpp b/panels/dock/taskmanager/treelandwindow.cpp index 9517e3add..570e132cd 100644 --- a/panels/dock/taskmanager/treelandwindow.cpp +++ b/panels/dock/taskmanager/treelandwindow.cpp @@ -7,6 +7,7 @@ #include #include +#include #include @@ -203,7 +204,12 @@ void TreeLandWindow::minimize() void TreeLandWindow::killClient() { - m_foreignToplevelHandle->close(); + const auto pid = m_foreignToplevelHandle->pid(); + if (pid <= 0) { + qCWarning(waylandwindowLog()) << "Cannot find pid of window" << m_foreignToplevelHandle->appid() << m_foreignToplevelHandle->id(); + return; + } + ::kill(pid, SIGKILL); } void TreeLandWindow::setWindowIconGeometry(const QWindow* baseWindow, const QRect& gemeotry)