Skip to content

Commit 0bccfd4

Browse files
committed
perf: optimize XSettings1 startup — remove Before constraint, skip redundant 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
1 parent 1616fb1 commit 0bccfd4

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

src/plugin-qt/xsettings/impl/xsettingsmanager.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,18 @@ XSettingsManager::XSettingsManager(QObject *parent)
3030
, m_xcbUtils(XcbUtils::getInstance())
3131
{
3232
connect(m_settingDconfig, &DTK_CORE_NAMESPACE::DConfig::valueChanged, this, &XSettingsManager::handleDConfigChangedCb);
33-
setScreenScaleFactors(getScreenScaleFactors(), false);
34-
adjustScaleFactor(getRecommendedScaleFactor());
33+
34+
double scale = 0;
35+
if (m_settingDconfig->isValid()) {
36+
scale = m_settingDconfig->value("scale-factor").toDouble();
37+
}
38+
39+
// scale <= 0 is invalid, use recommended scale factor
40+
if (scale <= 0) {
41+
setScreenScaleFactors(getScreenScaleFactors(), false);
42+
adjustScaleFactor(getRecommendedScaleFactor());
43+
}
44+
3545
setSettings(getSettingsInSchema());
3646

3747
updateDPI();

src/plugin-qt/xsettings/misc/org.deepin.dde.XSettings1.service

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ CollectMode=inactive-or-failed
77
PartOf=dde-session-pre.target
88
Before=dde-session-pre.target
99

10-
Before=org.dde.session.Daemon1.service
11-
1210
[Service]
1311
Type=dbus
1412
BusName=org.deepin.dde.XSettings1

0 commit comments

Comments
 (0)