feature(display): fix some bugfixes related to display.

- 修复一些与显示相关的问题

Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
This commit is contained in:
tangjie02 2022-09-06 10:42:30 +08:00
parent e1ff0968e1
commit b93d093b4a
4 changed files with 761 additions and 2 deletions

View File

@ -0,0 +1,40 @@
From d4f3b5a66d99f9ec4a9aba8af5e07b6d1eeb49e3 Mon Sep 17 00:00:00 2001
From: tangjie02 <tangjie02@kylinsec.com.cn>
Date: Thu, 25 Aug 2022 19:19:24 +0800
Subject: [PATCH 1/3] feature(sonarqube): turn off sonarqube check to
get_error_desc function.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 关闭sonarqube对get_error_desc函数检查
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
---
lib/base/error.cpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/base/error.cpp b/lib/base/error.cpp
index 5a95605..0dcbcee 100644
--- a/lib/base/error.cpp
+++ b/lib/base/error.cpp
@@ -23,6 +23,8 @@ CCError::CCError()
{
}
+// sonarqube off
+
std::string CCError::get_error_desc(CCErrorCode error_code, bool attach_error_code)
{
std::string error_desc;
@@ -427,4 +429,7 @@ std::string CCError::get_error_desc(CCErrorCode error_code, bool attach_error_co
}
return error_desc;
}
+
+// sonarqube on
+
} // namespace Kiran
--
2.33.0

View File

@ -0,0 +1,629 @@
From ff582cbf24c9727716ca9a1af6a9866a5e0840f6 Mon Sep 17 00:00:00 2001
From: tangjie02 <tangjie02@kylinsec.com.cn>
Date: Thu, 1 Sep 2022 17:41:40 +0800
Subject: [PATCH 2/3] feature(error): Add error message when Failed to apply
display setting.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 当应用显示设置失败时添加错误提示。
Signed-off-by: tangjie02 <tangjie02@kylinsec.com.cn>
---
lib/base/error.cpp | 4 +-
plugins/display/display-manager.cpp | 14 +-
po/zh_CN.po | 217 ++++++++++++++--------------
3 files changed, 127 insertions(+), 108 deletions(-)
diff --git a/lib/base/error.cpp b/lib/base/error.cpp
index 0dcbcee..656e732 100644
--- a/lib/base/error.cpp
+++ b/lib/base/error.cpp
@@ -219,6 +219,9 @@ std::string CCError::get_error_desc(CCErrorCode error_code, bool attach_error_co
case CCErrorCode::ERROR_DISPLAY_UNKNOWN_REFLECT_TYPE:
error_desc = _("Unknown reflect type.");
break;
+ case CCErrorCode::ERROR_DISPLAY_EXEC_XRANDR_FAILED:
+ error_desc = _("The current settings cannot be applied.");
+ break;
case CCErrorCode::ERROR_APPEARANCE_THEME_NOT_EXIST:
error_desc = _("Theme not exist.");
break;
@@ -387,7 +390,6 @@ std::string CCError::get_error_desc(CCErrorCode error_code, bool attach_error_co
case CCErrorCode::ERROR_ACCOUNTS_USER_GROUP_NOT_FOUND:
case CCErrorCode::ERROR_ACCOUNTS_USER_AUTH_SAVE_DATA_FAILED:
case CCErrorCode::ERROR_ACCOUNTS_USER_AUTH_DEL_DATA_FAILED:
- case CCErrorCode::ERROR_DISPLAY_EXEC_XRANDR_FAILED:
case CCErrorCode::ERROR_DISPLAY_SAVE_CREATE_FILE_FAILED:
case CCErrorCode::ERROR_DISPLAY_WRITE_CONF_FILE_FAILED:
case CCErrorCode::ERROR_APPEARANCE_SET_BACKGROUND_FAILED:
diff --git a/plugins/display/display-manager.cpp b/plugins/display/display-manager.cpp
index bc18eb9..9b7190e 100644
--- a/plugins/display/display-manager.cpp
+++ b/plugins/display/display-manager.cpp
@@ -580,13 +580,23 @@ bool DisplayManager::apply(CCErrorCode &error_code)
try
{
+ std::string standard_error;
+ int32_t exit_status = 0;
+
KLOG_DEBUG("cmdline: %s.", cmdline.c_str());
- Glib::spawn_command_line_sync(cmdline);
+ Glib::spawn_command_line_sync(cmdline, nullptr, &standard_error, &exit_status);
+
+ if (!standard_error.empty() || exit_status != 0)
+ {
+ error_code = CCErrorCode::ERROR_DISPLAY_EXEC_XRANDR_FAILED;
+ KLOG_WARNING("Failed to run xrandr: %s.", standard_error.c_str());
+ return false;
+ }
}
catch (const Glib::Error &e)
{
error_code = CCErrorCode::ERROR_DISPLAY_EXEC_XRANDR_FAILED;
- KLOG_WARNING("%s.", e.what().c_str());
+ KLOG_WARNING("Failed to run xrandr: %s.", e.what().c_str());
return false;
}
return true;
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 0f3f202..e1c431e 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kiran-cc-daemon 2.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-08-16 17:47+0800\n"
+"POT-Creation-Date: 2022-09-01 17:39+0800\n"
"PO-Revision-Date: 2020-07-01 17:54+0800\n"
"Last-Translator: tangjie02 <tangjie02@kylinos.com.cn>\n"
"Language-Team: Chinese (simplified)\n"
@@ -406,424 +406,428 @@ msgstr "输出版本信息并退出"
msgid "Control center"
msgstr "控制中心"
-#: ../lib/base/error.cpp:32
+#: ../lib/base/error.cpp:34
msgid "The argument is invalid."
msgstr "参数不合法。"
-#: ../lib/base/error.cpp:35
+#: ../lib/base/error.cpp:37
msgid "Operation failed."
msgstr "操作失败。"
-#: ../lib/base/error.cpp:39
+#: ../lib/base/error.cpp:41
msgid "The plugin doesn't exist."
msgstr "插件不存在。"
-#: ../lib/base/error.cpp:46
+#: ../lib/base/error.cpp:48
msgid "No user found."
msgstr "没有发现用户。"
-#: ../lib/base/error.cpp:49
+#: ../lib/base/error.cpp:51
msgid "Multiple users have the same authentication data."
msgstr "多个用户存在相同的认证数据"
-#: ../lib/base/error.cpp:52
+#: ../lib/base/error.cpp:54
msgid ""
"The user is already logined in, Please log off the user before deleting it."
msgstr "用户已经登录,请注销该用户后再删除"
-#: ../lib/base/error.cpp:55
+#: ../lib/base/error.cpp:57
msgid "The user already exists."
msgstr "用户已存在。"
-#: ../lib/base/error.cpp:58
+#: ../lib/base/error.cpp:60
msgid "Unknown account type."
msgstr "未知的用户类型。"
-#: ../lib/base/error.cpp:61
+#: ../lib/base/error.cpp:63
msgid "Can't update password file."
msgstr "不能更新password文件。"
-#: ../lib/base/error.cpp:64
+#: ../lib/base/error.cpp:66
msgid "Invalid command syntax."
msgstr "命令语法无效。"
-#: ../lib/base/error.cpp:67
+#: ../lib/base/error.cpp:69
msgid "Invalid argument to option."
msgstr "命令参数无效。"
-#: ../lib/base/error.cpp:70
+#: ../lib/base/error.cpp:72
msgid "UID already in use."
msgstr "UID已在使用中。"
-#: ../lib/base/error.cpp:73
+#: ../lib/base/error.cpp:75
msgid "Passwd file contains errors."
msgstr "Passwd文件存在错误。"
-#: ../lib/base/error.cpp:76
+#: ../lib/base/error.cpp:78
msgid "Specified user/group doesn't exist."
msgstr "指定的用户/组不存在。"
-#: ../lib/base/error.cpp:79
+#: ../lib/base/error.cpp:81
msgid "User to modify is logged in."
msgstr "要修改的用户已登陆。"
-#: ../lib/base/error.cpp:82
+#: ../lib/base/error.cpp:84
msgid "Username already in use."
msgstr "用户名已经在使用中。"
-#: ../lib/base/error.cpp:85
+#: ../lib/base/error.cpp:87
msgid "Can't update group file."
msgstr "不能更新group文件。"
-#: ../lib/base/error.cpp:88
+#: ../lib/base/error.cpp:90
msgid "Insufficient space to move home dir."
msgstr "空间不足,无法移动主目录。"
-#: ../lib/base/error.cpp:91
+#: ../lib/base/error.cpp:93
msgid "Can't create/remove/move home directory."
msgstr "不能创建/删除/移动主目录。"
-#: ../lib/base/error.cpp:95
+#: ../lib/base/error.cpp:97
msgid "Can't update SELinux user mapping."
msgstr "无法更新SELinux用户映射。"
-#: ../lib/base/error.cpp:98
+#: ../lib/base/error.cpp:100
msgid "Can't update the subordinate uid file."
msgstr "无法更新下级uid文件。"
-#: ../lib/base/error.cpp:101
+#: ../lib/base/error.cpp:103
msgid "Can't update the subordinate gid file."
msgstr "无法更新下级gid文件。"
-#: ../lib/base/error.cpp:104
+#: ../lib/base/error.cpp:106
msgid "Refuse to delete root user."
msgstr "禁止删除root用户。"
-#: ../lib/base/error.cpp:107
+#: ../lib/base/error.cpp:109
msgid "Refuse to delete three authority user."
msgstr "禁止删除三权用户。"
-#: ../lib/base/error.cpp:113
+#: ../lib/base/error.cpp:115
msgid "The authentication mode isn't supported."
msgstr "认证模式不支持。"
-#: ../lib/base/error.cpp:116
+#: ../lib/base/error.cpp:118
msgid "User is locked."
msgstr "用户被锁定。"
-#: ../lib/base/error.cpp:119
+#: ../lib/base/error.cpp:121
msgid "The name already exists."
msgstr "名字已存在"
-#: ../lib/base/error.cpp:123
+#: ../lib/base/error.cpp:125
msgid "The range of volume is between 0 and 1.0."
msgstr "音量范围必须在[0, 1.0]之间"
-#: ../lib/base/error.cpp:127
+#: ../lib/base/error.cpp:129
msgid "The range of balance is between -1 and 1."
msgstr "平衡范围必须在[-1, 1]之间"
-#: ../lib/base/error.cpp:131
+#: ../lib/base/error.cpp:133
msgid "The sink device isn't found."
msgstr "未找到输出设备。"
-#: ../lib/base/error.cpp:135
+#: ../lib/base/error.cpp:137
msgid "The source device isn't found."
msgstr "未找到输入设备。"
-#: ../lib/base/error.cpp:139
+#: ../lib/base/error.cpp:141
msgid "The sink stream isn't found."
msgstr "未找到输出流。"
-#: ../lib/base/error.cpp:142
+#: ../lib/base/error.cpp:144
msgid "NTP unit is active."
msgstr "NTP服务已开启。"
-#: ../lib/base/error.cpp:145
+#: ../lib/base/error.cpp:147
msgid "Invalid timezone."
msgstr "不合法的时区。"
-#: ../lib/base/error.cpp:148
+#: ../lib/base/error.cpp:150
msgid "No NTP unit available."
msgstr "没有NTP服务可用。"
-#: ../lib/base/error.cpp:152
+#: ../lib/base/error.cpp:154
msgid "Unknown date format type."
msgstr "未知的日期格式化类型。"
-#: ../lib/base/error.cpp:155
+#: ../lib/base/error.cpp:157
msgid "Failed to set date format."
msgstr "设置日期显示格式失败。"
-#: ../lib/base/error.cpp:158
+#: ../lib/base/error.cpp:160
msgid "Failed to set hour format."
msgstr "设置时间显示格式失败。"
-#: ../lib/base/error.cpp:161
+#: ../lib/base/error.cpp:163
msgid "Failed to set seconds showing."
msgstr "设置秒数是否显示失败。"
-#: ../lib/base/error.cpp:164
+#: ../lib/base/error.cpp:166
msgid "Failed to start NTP unit."
msgstr "开启NTP服务失败。"
-#: ../lib/base/error.cpp:167
+#: ../lib/base/error.cpp:169
msgid "Failed to stop NTP unit."
msgstr "停止NTP服务失败。"
-#: ../lib/base/error.cpp:171
+#: ../lib/base/error.cpp:173
msgid "Unknown display style."
msgstr "未知的显示类型。"
-#: ../lib/base/error.cpp:174
+#: ../lib/base/error.cpp:176
msgid ""
"The mode of monitors which contain resolution and refresh rate is no "
"intersection."
msgstr "所有显示器没有相同的分辨率和刷新率。"
-#: ../lib/base/error.cpp:177
+#: ../lib/base/error.cpp:179
msgid "Auto mode is set failed."
msgstr "自动模式设置失败。"
-#: ../lib/base/error.cpp:181
+#: ../lib/base/error.cpp:183
msgid "Failed to set the window scaling factor."
msgstr "设置窗口缩放因子失败。"
-#: ../lib/base/error.cpp:184
+#: ../lib/base/error.cpp:186
msgid "The custom configuration file isn't found."
msgstr "未找到自定义配置文件。"
-#: ../lib/base/error.cpp:187
+#: ../lib/base/error.cpp:189
msgid "Not found matched item in custom configuration file."
msgstr "不能找到匹配的配置项。"
-#: ../lib/base/error.cpp:190
+#: ../lib/base/error.cpp:192
msgid "The primary monitor must not be empty."
msgstr "主显示器不能为空。"
-#: ../lib/base/error.cpp:193
+#: ../lib/base/error.cpp:195
msgid "Not found the primary monitor."
msgstr "未找到主显示器。"
-#: ../lib/base/error.cpp:196
+#: ../lib/base/error.cpp:198
msgid ""
"Cannot disable the monitor, because the number of the enabled monitor is "
"less than 1."
msgstr "不能禁用显示器因为启用的显示器数量已经少于2个。"
-#: ../lib/base/error.cpp:199
+#: ../lib/base/error.cpp:201
msgid "Exist null mode in mode list."
msgstr "模式列表中存在空的模式。"
-#: ../lib/base/error.cpp:202
+#: ../lib/base/error.cpp:204
msgid "Exist null mode in preferred mode list."
msgstr "在推荐模式中存在空的模式。"
-#: ../lib/base/error.cpp:205
+#: ../lib/base/error.cpp:207
msgid "The current mode is not exist."
msgstr "当前模式不存在。"
-#: ../lib/base/error.cpp:209
+#: ../lib/base/error.cpp:211
msgid "Not found match mode."
msgstr "未发现匹配的模式。"
-#: ../lib/base/error.cpp:212
+#: ../lib/base/error.cpp:214
msgid "The mode is not exist."
msgstr "当前模式不存在。"
-#: ../lib/base/error.cpp:215
+#: ../lib/base/error.cpp:217
msgid "Unknown rotation type."
msgstr "未知的旋转类型。"
-#: ../lib/base/error.cpp:218
+#: ../lib/base/error.cpp:220
msgid "Unknown reflect type."
msgstr "未知的映射类型。"
-#: ../lib/base/error.cpp:221
+#: ../lib/base/error.cpp:223
+msgid "The current settings cannot be applied."
+msgstr "无法应用当前设置。"
+
+#: ../lib/base/error.cpp:226
msgid "Theme not exist."
msgstr "主题不存在。"
-#: ../lib/base/error.cpp:224
+#: ../lib/base/error.cpp:229
msgid "Unsupported theme type."
msgstr "主题类型不支持。"
-#: ../lib/base/error.cpp:227
+#: ../lib/base/error.cpp:232
msgid "Invalid theme type."
msgstr "主题类型不合法。"
-#: ../lib/base/error.cpp:231
+#: ../lib/base/error.cpp:236
msgid "Invalid font type."
msgstr "字体类型不合法。"
-#: ../lib/base/error.cpp:234
+#: ../lib/base/error.cpp:239
msgid "Unsupported font type."
msgstr "字体类型不支持。"
-#: ../lib/base/error.cpp:237
+#: ../lib/base/error.cpp:242
msgid "An incomplete request already exists."
msgstr "存在未完成的请求。"
-#: ../lib/base/error.cpp:240
+#: ../lib/base/error.cpp:245
msgid "The request is canceled."
msgstr "请求被取消。"
-#: ../lib/base/error.cpp:246
+#: ../lib/base/error.cpp:251
msgid "The request is rejected."
msgstr "请求被拒绝。"
-#: ../lib/base/error.cpp:249
+#: ../lib/base/error.cpp:254
msgid "Not found adapter."
msgstr "未发现适配器。"
-#: ../lib/base/error.cpp:257
+#: ../lib/base/error.cpp:262
msgid "Sync to file failed."
msgstr "同步到文件失败。"
-#: ../lib/base/error.cpp:263
+#: ../lib/base/error.cpp:268
msgid "Invalid scale mode."
msgstr "缩放模式不合法。"
-#: ../lib/base/error.cpp:266
+#: ../lib/base/error.cpp:271
msgid "The number of the layout can't exceeds {0}."
msgstr "布局数量不能超过{0}个。"
-#: ../lib/base/error.cpp:269
+#: ../lib/base/error.cpp:274
msgid "The layout is invalid."
msgstr "该布局不合法。"
-#: ../lib/base/error.cpp:272
+#: ../lib/base/error.cpp:277
msgid "The layout already exist."
msgstr "该布局已存在。"
-#: ../lib/base/error.cpp:275
+#: ../lib/base/error.cpp:280
msgid "Failed to set the layout."
msgstr "设置布局失败。"
-#: ../lib/base/error.cpp:278
+#: ../lib/base/error.cpp:283
msgid "The layout is no exist."
msgstr "该布局不存在。"
-#: ../lib/base/error.cpp:281
+#: ../lib/base/error.cpp:286
msgid "Failed to update the layout."
msgstr "更新布局失败。"
-#: ../lib/base/error.cpp:284
+#: ../lib/base/error.cpp:289
msgid "The layout option already exist."
msgstr "布局选项已存在。"
-#: ../lib/base/error.cpp:287
+#: ../lib/base/error.cpp:292
msgid "Failed to set the layout option."
msgstr "设置布局选项失败。"
-#: ../lib/base/error.cpp:290
+#: ../lib/base/error.cpp:295
msgid "The layout option is no exist."
msgstr "布局选项不存在。"
-#: ../lib/base/error.cpp:293
+#: ../lib/base/error.cpp:298
msgid "Failed to update the layout option."
msgstr "更新布局选项失败。"
-#: ../lib/base/error.cpp:296
+#: ../lib/base/error.cpp:301
msgid "Failed to clear the layout option."
msgstr "清理布局选项失败。"
-#: ../lib/base/error.cpp:299
+#: ../lib/base/error.cpp:304
msgid "The custom shortcut isn't exist."
msgstr "自定义快捷键不存在。"
-#: ../lib/base/error.cpp:303
+#: ../lib/base/error.cpp:308
msgid "The key combination already exist."
msgstr "按键组合已经存在。"
-#: ../lib/base/error.cpp:307
+#: ../lib/base/error.cpp:312
msgid "The key combination is invalid."
msgstr "按键组合不合法。"
-#: ../lib/base/error.cpp:310
+#: ../lib/base/error.cpp:315
msgid "The system shortcut isn't exist."
msgstr "该系统快捷键不存在。"
-#: ../lib/base/error.cpp:316
+#: ../lib/base/error.cpp:321
msgid "Unsupported power supply mode."
msgstr "不支持该供电模式。"
-#: ../lib/base/error.cpp:322
+#: ../lib/base/error.cpp:327
msgid "Unsupported power device."
msgstr "不支持该设备。"
-#: ../lib/base/error.cpp:325
+#: ../lib/base/error.cpp:330
msgid "The value must be between 0 and 100."
msgstr "值必须在0到100之间"
-#: ../lib/base/error.cpp:329
+#: ../lib/base/error.cpp:334
msgid "Unknown power action."
msgstr "未知电源动作。"
-#: ../lib/base/error.cpp:333
+#: ../lib/base/error.cpp:338
msgid "Unsupported power event."
msgstr "事件不支持。"
-#: ../lib/base/error.cpp:336
+#: ../lib/base/error.cpp:341
msgid "Failed to set the action."
msgstr "设置触发行为失败。"
-#: ../lib/base/error.cpp:339
+#: ../lib/base/error.cpp:344
msgid "Failed to set brightness."
msgstr "设置亮度失败。"
-#: ../lib/base/error.cpp:342
+#: ../lib/base/error.cpp:347
msgid "The systeminfo type is invalid."
msgstr "系统信息类型不合法。"
-#: ../lib/base/error.cpp:345
+#: ../lib/base/error.cpp:350
msgid "Failed to set host name."
msgstr "设置主机名失败。"
-#: ../lib/base/error.cpp:348
+#: ../lib/base/error.cpp:353
msgid "Not found the property."
msgstr "未找到该属性。"
-#: ../lib/base/error.cpp:351
+#: ../lib/base/error.cpp:356
msgid "The type is mismatch."
msgstr "类型不匹配。"
-#: ../lib/base/error.cpp:354
+#: ../lib/base/error.cpp:359
msgid "The property is invalid."
msgstr "属性不合法"
-#: ../lib/base/error.cpp:357
+#: ../lib/base/error.cpp:362
msgid "The property must not be modified manually."
msgstr "属性不能手动修改。"
-#: ../lib/base/error.cpp:360
+#: ../lib/base/error.cpp:365
msgid "The property is unsupported."
msgstr "属性不支持。"
-#: ../lib/base/error.cpp:364
+#: ../lib/base/error.cpp:369
msgid "Arguments invalid."
msgstr "参数不合法"
-#: ../lib/base/error.cpp:367
+#: ../lib/base/error.cpp:372
msgid "The network proxy mode is invalid."
msgstr "代理模式不合法"
-#: ../lib/base/error.cpp:370
+#: ../lib/base/error.cpp:375
msgid "The current network proxy mode is not manual."
msgstr "当前代理模式不是手动模式。"
-#: ../lib/base/error.cpp:373
+#: ../lib/base/error.cpp:378
msgid "The current network proxy mode is not auto."
msgstr "当前代理模式不是自动模式。"
-#: ../lib/base/error.cpp:414
+#: ../lib/base/error.cpp:418
msgid "Internel error."
msgstr "内部错误。"
-#: ../lib/base/error.cpp:417 ../lib/base/error.cpp:420
+#: ../lib/base/error.cpp:421 ../lib/base/error.cpp:424
msgid "Unknown error."
msgstr "未知错误。"
-#: ../lib/base/error.cpp:426 ../plugins/accounts/accounts-util.cpp:209
+#: ../lib/base/error.cpp:430 ../plugins/accounts/accounts-util.cpp:209
msgid " (error code: 0x{:x})"
msgstr "(错误码0x{:x})"
@@ -1194,6 +1198,9 @@ msgstr "电源管理"
msgid "Power management daemon"
msgstr "电源管理后端"
+#~ msgid "Display setting failed."
+#~ msgstr "显示设置失败。"
+
#~ msgid "The custom shortcut is invalid."
#~ msgstr "自定义快捷键不合法。"
--
2.33.0

View File

@ -0,0 +1,83 @@
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

View File

@ -1,6 +1,6 @@
Name: kiran-cc-daemon
Version: 2.3.1
Release: 5
Release: 6
Summary: DBus daemon for Kiran Desktop
License: MulanPSL-2.0
@ -9,7 +9,10 @@ Source0: %{name}-%{version}.tar.gz
Patch0001: 0001-fix-coredump-Fix-coredump-problem-caused-by-nullpoin.patch
Patch0002: 0001-fix-hidpi-Fixed-QT-font-DPI-to-avoid-double-scaling.patch
Patch0003: 0001-feature-display-The-scaling-rate-can-only-take-effec.patch
patch0004: 0001-fix-display-Fix-the-problem-that-all-monitors-doesn-.patch
Patch0004: 0001-fix-display-Fix-the-problem-that-all-monitors-doesn-.patch
Patch0005: 0001-feature-sonarqube-turn-off-sonarqube-check-to-get_er.patch
Patch0006: 0002-feature-error-Add-error-message-when-Failed-to-apply.patch
Patch0007: 0003-fix-display-Fixed-the-display-configuration-applicat.patch
BuildRequires: cmake >= 3.2
@ -149,6 +152,10 @@ glib-compile-schemas /usr/share/glib-2.0/schemas &> /dev/nulls || :
%{_libdir}/pkgconfig/kiran-cc-daemon.pc
%changelog
* Tue Sep 06 2022 tangjie02 <tangjie02@kylinsec.com.cn> - 2.3.1-6
- KYOS-B: Fixed the display configuration application failure caused by output name matching failure
- KYOS-F: Add error message when Failed to apply display setting.
* Wed Aug 17 2022 tangjie02 <tangjie02@kylinsec.com.cn> - 2.3.1-5
- KYOS-B: Fix the problem that all monitors doesn't display because the saved enable field of all monitors is set off.