From f3d6510a39ae4b938b5232557865788c447126c5 Mon Sep 17 00:00:00 2001 From: shuaijie Date: Mon, 23 Sep 2024 11:43:44 +0800 Subject: [PATCH] fix: add S3 wakeup detect support add S3 detect support Log: add S3 detect support Bug: https://pms.uniontech.com/bug-view-273929.html --- .../deepin-deviceinfo/src/mainjob.cpp | 34 ++++++++++++------- .../deepin-deviceinfo/src/mainjob.h | 5 ++- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.cpp index 3613fe4f..e6dcc17d 100644 --- a/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include @@ -49,25 +50,32 @@ MainJob::MainJob(const char *name, QObject *parent) } #endif - // 后台加载后先禁用设备 - QProcess process; - QStringList options; - options << "--netcard" << "--keyboard" << "--mouse" << "--usb"; - process.start("hwinfo", options); - process.waitForFinished(-1); - QString info = process.readAllStandardOutput(); - process.close(); - - ControlInterface::getInstance()->disableOutDevice(info); - ControlInterface::getInstance()->disableInDevice(); - ControlInterface::getInstance()->updateWakeup(info); - + slotRebootInit(0); connect(m_deviceInterface, &DeviceInterface::sigUpdate, this, &MainJob::slotUsbChanged); connect(ControlInterface::getInstance(), &ControlInterface::sigUpdate, this, &MainJob::slotUsbChanged); #ifndef DISABLE_DRIVER connect(ControlInterface::getInstance(), &ControlInterface::sigFinished, this, &MainJob::slotDriverControl); #endif }); + //"System has woken up from sleep (S3)"; + QDBusConnection::systemBus().connect("org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", "PrepareForSleep", // Signal + this, SLOT(slotRebootInit(bool)) + ); +} +void MainJob::slotRebootInit(bool isSleep) +{ + // 后台加载后先禁用设备 + QProcess process; + QStringList options; + options << "--netcard" << "--keyboard" << "--mouse" << "--usb"; + process.start("hwinfo", options); + process.waitForFinished(-1); + QString info = process.readAllStandardOutput(); + process.close(); + // init from sql db + ControlInterface::getInstance()->disableOutDevice(info); + ControlInterface::getInstance()->disableInDevice(); + ControlInterface::getInstance()->updateWakeup(info); } bool MainJob::serverIsRunning() diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.h b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.h index e7558ebe..0b535140 100644 --- a/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.h @@ -44,7 +44,10 @@ private slots: * @param usbchanged */ void slotDriverControl(bool success); - + /** + * @brief slotRebootInit + */ + void slotRebootInit(bool); private: /** * @brief initDriverRepoSource : 初始化驱动仓库