diff --git a/dbus/adaptor/org.deepin.dde.SessionManager1.xml b/dbus/adaptor/org.deepin.dde.SessionManager1.xml index 0467a1c..90579dc 100644 --- a/dbus/adaptor/org.deepin.dde.SessionManager1.xml +++ b/dbus/adaptor/org.deepin.dde.SessionManager1.xml @@ -17,9 +17,6 @@ - - - diff --git a/src/dde-session/impl/sessionmanager.cpp b/src/dde-session/impl/sessionmanager.cpp index 77e3ee0..43f1bf7 100644 --- a/src/dde-session/impl/sessionmanager.cpp +++ b/src/dde-session/impl/sessionmanager.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2021 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2021 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -289,24 +289,6 @@ bool SessionManager::CanSuspend() return canSuspend == "yes"; } -void SessionManager::ForceLogout() -{ - qDebug() << "force logout"; - - prepareLogout(true); - clearCurrentTty(); - doLogout(); -} - -void SessionManager::ForceReboot() -{ - reboot(true); -} - -void SessionManager::ForceShutdown() -{ - shutdown(true); -} /** * @brief SessionManager::GetInhibitors 遍历得到 Inhibitor 的路径列表,Inhibitor 是操作拦截器的意思,可以阻止一些由 flags 指定的操作。 * @return ArrayofObjectPath: 返回一个包含 Inhibitors 路径名的数组 @@ -451,12 +433,12 @@ void SessionManager::RequestLogout() void SessionManager::RequestReboot() { - reboot(false); + reboot(true); } void SessionManager::RequestShutdown() { - shutdown(false); + shutdown(true); } void SessionManager::RequestSuspend() @@ -517,11 +499,18 @@ void SessionManager::prepareShutdown(bool force) { stopSogouIme(); stopBAMFDaemon(); - - if (!force) - preparePlayShutdownSound(); - + preparePlayShutdownSound(); stopPulseAudioService(); + + if (force) { + // 直接停止session,默认不会等待应用程序准备完成,强制关机 + EXEC_COMMAND("/usr/bin/dde-am" + , QStringList() + << "-c" + << "/usr/libexec/dde-session-ctl" + << "--" + << "--shutdown"); + } } void SessionManager::clearCurrentTty() diff --git a/src/dde-session/impl/sessionmanager.h b/src/dde-session/impl/sessionmanager.h index 80a258d..c2906e8 100644 --- a/src/dde-session/impl/sessionmanager.h +++ b/src/dde-session/impl/sessionmanager.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2021 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2021 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -49,9 +49,6 @@ public Q_SLOTS: bool CanReboot(); bool CanShutdown(); bool CanSuspend(); - void ForceLogout(); - void ForceReboot(); - void ForceShutdown(); QList GetInhibitors(); uint Inhibit(const QString &appId, uint topLevelXid, const QString &reason, uint flags); bool IsInhibited (uint flags);