From 7d768d6a345d9a02e61fa39f3c0d144e7f6caaa5 Mon Sep 17 00:00:00 2001 From: deepin-wm Date: Tue, 23 Jun 2026 18:06:27 +0800 Subject: [PATCH] fix: add Wayland screen-off in systemTurnOffScreen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Change TurnOffScreen() to call doTurnOffScreen() which handles lock + delay + DPMS off internally 2. Replace Wayland TODO placeholder in powercontroller with sessionBus DBus call to Power1 TurnOffScreen Log: Fixed power button screen-off not working on Wayland/Treeland Influence: 1. Test power button screen-off in Treeland session 2. Verify lock screen appears before display turns off 3. Test wake from screen-off resumes to lock screen 4. Verify X11 screen-off path is not affected fix: 实现 Wayland 熄屏功能 1. 修改 TurnOffScreen() 调用 doTurnOffScreen(),内部 已封装锁屏+延迟+熄屏完整流程 2. 替换 powercontroller Wayland TODO 占位为 sessionBus DBus 调用 Power1 TurnOffScreen Log: 修复 Wayland/Treeland 下按电源键熄屏无响应的问题 Influence: 1. 在 Treeland 会话下测试按电源键熄屏功能 2. 验证熄屏前锁屏界面正常显示 3. 测试从熄屏唤醒后回到锁屏界面 4. 验证 X11 熄屏路径不受影响 PMS: BUG-209669 --- src/plugin-qt/power/session/powermanager.cpp | 2 +- .../shortcut/tools/dde-shortcut-tool/powercontroller.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugin-qt/power/session/powermanager.cpp b/src/plugin-qt/power/session/powermanager.cpp index ff9de2a..53c693b 100644 --- a/src/plugin-qt/power/session/powermanager.cpp +++ b/src/plugin-qt/power/session/powermanager.cpp @@ -411,7 +411,7 @@ void PowerManager::SetPrepareSuspend(int state) void PowerManager::TurnOffScreen() { - setDPMSModeOff(); + doTurnOffScreen(); } void PowerManager::TurnOnScreen() diff --git a/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp b/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp index a4b59ca..8d1aa0c 100644 --- a/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp +++ b/src/plugin-qt/shortcut/tools/dde-shortcut-tool/powercontroller.cpp @@ -410,7 +410,13 @@ void PowerController::systemTurnOffScreen() qInfo() << "PowerController: turn off screen"; if (isWaylandSession()) { - // TODO: adapt screen-off for Treeland Wayland (DPMS path TBD). + QDBusInterface power("org.deepin.dde.Power1", "/org/deepin/dde/Power1", + "org.deepin.dde.Power1", QDBusConnection::sessionBus()); + if (power.isValid()) { + power.call("TurnOffScreen"); + } else { + qWarning() << "PowerController: Power1 unavailable for TurnOffScreen"; + } return; }