kiran-cc-daemon/0003-fix-display-Fixed-the-display-configuration-applicat.patch
tangjie02 b93d093b4a feature(display): fix some bugfixes related to display.
- 修复一些与显示相关的问题

Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
2022-09-06 11:49:15 +08:00

84 lines
3.9 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From e4485a62f8f8f6bb0695d6a1510b05e774409144 Mon Sep 17 00:00:00 2001
From: tangjie02 <tangjie02@kylinsec.com.cn>
Date: Mon, 5 Sep 2022 11:52:45 +0800
Subject: [PATCH 3/3] fix(display): Fixed the display configuration
application failure caused by output name matching failure
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
修复由于output name匹配失败导致显示配置应用失败问题
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
---
include/error-i.h | 1 +
lib/base/error.cpp | 1 +
plugins/display/display-manager.cpp | 16 ++++++++++------
3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/include/error-i.h b/include/error-i.h
index c67b604..61aebac 100644
--- a/include/error-i.h
+++ b/include/error-i.h
@@ -159,6 +159,7 @@ extern "C"
ERROR_DISPLAY_NOTFOUND_MODE_BY_ID,
ERROR_DISPLAY_UNKNOWN_ROTATION_TYPE,
ERROR_DISPLAY_UNKNOWN_REFLECT_TYPE,
+ ERROR_DISPLAY_NO_ENABLED_MONITOR,
// Greeter
ERROR_GREETER_SYNC_TO_FILE_FAILED_1 = 0x190000,
diff --git a/lib/base/error.cpp b/lib/base/error.cpp
index 656e732..874277c 100644
--- a/lib/base/error.cpp
+++ b/lib/base/error.cpp
@@ -392,6 +392,7 @@ std::string CCError::get_error_desc(CCErrorCode error_code, bool attach_error_co
case CCErrorCode::ERROR_ACCOUNTS_USER_AUTH_DEL_DATA_FAILED:
case CCErrorCode::ERROR_DISPLAY_SAVE_CREATE_FILE_FAILED:
case CCErrorCode::ERROR_DISPLAY_WRITE_CONF_FILE_FAILED:
+ case CCErrorCode::ERROR_DISPLAY_NO_ENABLED_MONITOR:
case CCErrorCode::ERROR_APPEARANCE_SET_BACKGROUND_FAILED:
case CCErrorCode::ERROR_APPEARANCE_SET_LOCKSCREEN_BACKGROUND_FAILED:
case CCErrorCode::ERROR_SYSTEMINFO_JSON_ASSIGN_FAILED:
diff --git a/plugins/display/display-manager.cpp b/plugins/display/display-manager.cpp
index 9b7190e..778a81b 100644
--- a/plugins/display/display-manager.cpp
+++ b/plugins/display/display-manager.cpp
@@ -415,15 +415,17 @@ bool DisplayManager::apply_screen_config(const ScreenConfigInfo &screen_config,
if (!monitor)
{
KLOG_WARNING("cannot find monitor for %s.", uid.c_str());
- continue;
+ return false;
}
+ /* 一般情况下uid相同时name也是相同的但是有些特殊情况会出现不一样这里uid主要是为了唯一标识一台显示器
+ 而name是用来区分显示器接口的比如有一台显示器最开始是接入在HDMI-1后面改到HDMI-2了那么在能获取到edid的
+ 情况下uid是不变的但是name会发生变化。如果出现name不一样的情况下这里仅仅记录日志方便后续跟踪问题。*/
if (c_monitor.name() != monitor->name_get())
{
- KLOG_WARNING("the name is mismatch. config name: %s, monitor name: %s.",
- c_monitor.name().c_str(),
- monitor->name_get().c_str());
- continue;
+ KLOG_DEBUG("The monitor name is dismatch. config name: %s, monitor name: %s.",
+ c_monitor.name().c_str(),
+ monitor->name_get().c_str());
}
auto mode = monitor->match_best_mode(c_monitor.width(), c_monitor.height(), c_monitor.refresh_rate());
@@ -502,7 +504,9 @@ bool DisplayManager::save_config(CCErrorCode &error_code)
// 禁止保存没有开启任何显示器的配置,这可能会导致下次进入会话屏幕无法显示
if (this->get_enabled_monitors().size() == 0)
{
- error_code = CCErrorCode::ERROR_DISPLAY_ONLY_ONE_ENABLED_MONITOR;
+ KLOG_WARNING("It is forbidden to save the configuration without any display turned on, "
+ "which may cause the next session screen not to be displayed.");
+ error_code = CCErrorCode::ERROR_DISPLAY_NO_ENABLED_MONITOR;
return false;
}
--
2.33.0