diff -Naur ukui-session-manager-3.1.0/ukui-session/ukuismserver.cpp ukui-session-manager-3.1.0~/ukui-session/ukuismserver.cpp --- ukui-session-manager-3.1.0/ukui-session/ukuismserver.cpp 2022-04-20 17:40:57.000000000 +0800 +++ ukui-session-manager-3.1.0~/ukui-session/ukuismserver.cpp 2023-07-09 13:49:42.930414204 +0800 @@ -1065,22 +1065,28 @@ void UKUISMServer::completeKilling() { +// if (m_state == Killing) { +// //这一段的含义是只要客户端列表中还有非窗管的客户端存在,则等待,直到客户端中只有一个窗管,则开始杀死窗管 +// bool wait = false; +// foreach (UKUISMClient *c, m_clients) { +// if (isWM(c)) { +// continue; +// } +// wait = true; +// } + +// if (wait) { +// return; +// } + +// // killWM(); +// //修改为不杀死窗管,直接结束会话 +// killingCompleted(); +// } +// dy use default kde method if (m_state == Killing) { - //这一段的含义是只要客户端列表中还有非窗管的客户端存在,则等待,直到客户端中只有一个窗管,则开始杀死窗管 - bool wait = false; - foreach (UKUISMClient *c, m_clients) { - if (isWM(c)) { - continue; - } - wait = true; - } - - if (wait) { + if (!m_clients.isEmpty()) // still waiting for clients to go away return; - } - -// killWM(); - //修改为不杀死窗管,直接结束会话 killingCompleted(); } } @@ -1145,7 +1151,9 @@ void UKUISMServer::killingCompleted() { emit logoutFinished(); -// qApp->quit(); + //dy use default kde method + qApp->quit(); + return; //目前不清楚如果不做清理会有什么影响,看日志没有发现问题,使用上也没有区别,但为了保险还是加上 cleanUp();