61 lines
2.3 KiB
Diff
61 lines
2.3 KiB
Diff
From 975edfa981e6063c039863df74abd24a18e69804 Mon Sep 17 00:00:00 2001
|
||
From: tangjie02 <tangjie02@kylinsec.com.cn>
|
||
Date: Sun, 8 Oct 2023 11:04:08 +0800
|
||
Subject: [PATCH] fix(display): fix the switch function invalidation problem
|
||
after turn off monitor, then logout and relogin session.
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
- 修复在关闭显示器后,注销再登录到会话后关闭功能失效问题。
|
||
|
||
Fixed #17149
|
||
|
||
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
|
||
---
|
||
plugins/display/display-manager.cpp | 21 +++++++++++----------
|
||
1 file changed, 11 insertions(+), 10 deletions(-)
|
||
|
||
diff --git a/plugins/display/display-manager.cpp b/plugins/display/display-manager.cpp
|
||
index 10a4b61..bea2644 100644
|
||
--- a/plugins/display/display-manager.cpp
|
||
+++ b/plugins/display/display-manager.cpp
|
||
@@ -436,16 +436,6 @@ bool DisplayManager::apply_screen_config(const ScreenConfigInfo &screen_config,
|
||
monitor->name_get().c_str());
|
||
}
|
||
|
||
- auto mode = monitor->match_best_mode(c_monitor.width(), c_monitor.height(), c_monitor.refresh_rate());
|
||
- if (!mode)
|
||
- {
|
||
- KLOG_WARNING("Cannot match the mode. width: %d, height: %d, refresh: %.2f.",
|
||
- c_monitor.width(),
|
||
- c_monitor.height(),
|
||
- c_monitor.refresh_rate());
|
||
- return false;
|
||
- }
|
||
-
|
||
if (!c_monitor.enabled())
|
||
{
|
||
monitor->enabled_set(false);
|
||
@@ -457,6 +447,17 @@ bool DisplayManager::apply_screen_config(const ScreenConfigInfo &screen_config,
|
||
}
|
||
else
|
||
{
|
||
+ // 只有在显示器开启状态下才能取匹配mode,因为显示器关闭状态下c_monitor里面保持的分辨率都是0x0
|
||
+ auto mode = monitor->match_best_mode(c_monitor.width(), c_monitor.height(), c_monitor.refresh_rate());
|
||
+ if (!mode)
|
||
+ {
|
||
+ KLOG_WARNING("Cannot match the mode. width: %d, height: %d, refresh: %.2f.",
|
||
+ c_monitor.width(),
|
||
+ c_monitor.height(),
|
||
+ c_monitor.refresh_rate());
|
||
+ return false;
|
||
+ }
|
||
+
|
||
monitor->enabled_set(true);
|
||
monitor->x_set(c_monitor.x());
|
||
monitor->y_set(c_monitor.y());
|
||
--
|
||
2.36.1
|
||
|