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
|
|||
|
|
|