Skip to content

Commit 4aa0fb3

Browse files
committed
perf: optimize XSettings1 startup by removing Before constraint and skipping redundant init
Remove the Before=org.dde.session.Daemon1.service ordering constraint so XSettings1 and dde-session-daemon can start in parallel. On subsequent boots where the scale factor is already persisted in DConfig, skip the expensive RandR monitor enumeration, Plymouth scaling, and Greeter Qt theme update — saving approximately 100-350ms per login. First boot behavior is unchanged. 移除对 dde-session-daemon 的 Before 排序约束,使 XSettings1 和 dde-session-daemon 可以并行启动。后续登录时(缩放比已持久化到 DConfig),跳过 RandR 显示器枚举、 Plymouth 缩放通知和 Greeter Qt 主题更新等冗余操作,每次登录节省约 100-350ms。 首次启动行为不变。 Log: perf: optimize XSettings1 startup by removing Before constraint and skipping redundant init Change-Id: If46f0e440459812e52f579aa9ec02c4d758336a2
1 parent 6cefac6 commit 4aa0fb3

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)