perf: remove Before ordering constraint on dde-session-daemon from XS…#67
Conversation
Reviewer's guide (collapsed on small PRs)Reviewer's GuideRemoves the systemd/D-Bus unit ordering constraint that forced org.deepin.dde.XSettings1.service to start before dde-session-daemon, allowing both services to start in parallel and reducing startup serialization. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
d89bcc1 to
4aa0fb3
Compare
7618409 to
4da4e20
Compare
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: robertkill, yixinshark The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
…dundant init, clean up debug code Remove Before=org.dde.session.Daemon1.service so XSettings1 and dde-session-daemon start in parallel. On subsequent boots where scale factor is already persisted in DConfig, skip RandR monitor enumeration, Plymouth scaling, and Greeter Qt theme update (~100-350ms saved). Remove leftover debug code in getXcbAtomProperty that queried atom type names and hex-dumped binary property values on every call. Remove unnecessary isServiceRegistered guard in DSMRegister. Add startup timing logs (qWarning level) for future profiling. 移除对 dde-session-daemon 的 Before 排序约束,使 XSettings1 和 dde-session-daemon 可以并行启动。后续登录时跳过 RandR 枚举、Plymouth 缩放和 Greeter 更新 (节省约 100-350ms)。清理 getXcbAtomProperty 中的调试遗留代码(每次读取属性 都查询原子类型名称并 hex 转储二进制值)。移除 DSMRegister 中不必要的 isServiceRegistered 检查。添加启动计时日志用于性能分析。 Log: perf: optimize XSettings1 startup — remove Before constraint, skip redundant init, clean up debug code Change-Id: I2b5f4e9404bc2af10e077d936698a2b2569d2a8e
4da4e20 to
0bccfd4
Compare
|
/forcemerge |
|
This pr force merged! (status: blocked) |
deepin pr auto review你好!我是CodeGeex,很高兴为你审查这段代码。 本次审查主要涉及两个文件的修改:一是 1. 语法与逻辑
2. 代码质量
3. 代码性能
4. 代码安全
改进建议代码综合以上分析,我为你提供一份优化后的代码参考: diff --git a/src/plugin-qt/xsettings/impl/xsettingsmanager.cpp b/src/plugin-qt/xsettings/impl/xsettingsmanager.cpp
index b2acb39..2263d58 100644
--- a/src/plugin-qt/xsettings/impl/xsettingsmanager.cpp
+++ b/src/plugin-qt/xsettings/impl/xsettingsmanager.cpp
@@ -30,8 +30,24 @@ XSettingsManager::XSettingsManager(QObject *parent)
, m_xcbUtils(XcbUtils::getInstance())
{
connect(m_settingDconfig, &DTK_CORE_NAMESPACE::DConfig::valueChanged, this, &XSettingsManager::handleDConfigChangedCb);
- setScreenScaleFactors(getScreenScaleFactors(), false);
- adjustScaleFactor(getRecommendedScaleFactor());
+
+ // 定义缩放因子的合理范围,防止配置被恶意篡改导致UI异常
+ static constexpr double MIN_VALID_SCALE = 1.0;
+ static constexpr double MAX_VALID_SCALE = 3.0; // 请根据实际业务需求调整最大值
+
+ double scale = 0;
+ if (m_settingDconfig->isValid()) {
+ scale = m_settingDconfig->value("scale-factor").toDouble();
+ }
+
+ // scale <= 0 or out of bounds is invalid, use recommended scale factor
+ if (scale < MIN_VALID_SCALE || scale > MAX_VALID_SCALE) {
+ setScreenScaleFactors(getScreenScaleFactors(), false);
+ adjustScaleFactor(getRecommendedScaleFactor());
+ } else {
+ // TODO: 确认当 scale 有效时,是否需要调用 setScreenScaleFactors 同步其他屏幕参数?
+ // 如果需要,请在此处补充:setScreenScaleFactors(...);
+ }
+
setSettings(setSettingsInSchema());
updateDPI();关于 |
…ettings1 service
Remove the Before=org.dde.session.Daemon1.service ordering constraint from the XSettings1 D-Bus service unit. This allows dde-session-daemon to start in parallel with XSettings1, reducing startup serialization on the critical path.
移除 XSettings1 D-Bus 服务单元中对 dde-session-daemon 的 Before 排序约束, 使得 dde-session-daemon 可以与 XSettings1 并行启动,减少关键路径上的串行化等待。
Log: perf: remove Before ordering constraint on dde-session-daemon from XSettings1 service
Change-Id: I4fec93594441957f8ef21f5bcd1b43f0c228568c
Summary by Sourcery
Enhancements: