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 : 初始化驱动仓库