Skip to content

feat(record): add Treeland override to disable prelaunch splash#850

Merged
lzwind merged 1 commit into
linuxdeepin:masterfrom
dengzhongyuan365-dev:bug-fix-5-28
May 28, 2026
Merged

feat(record): add Treeland override to disable prelaunch splash#850
lzwind merged 1 commit into
linuxdeepin:masterfrom
dengzhongyuan365-dev:bug-fix-5-28

Conversation

@dengzhongyuan365-dev

Copy link
Copy Markdown
Member
  • Add DConfig override JSON to disable prelaunch splash for deepin-screen-recorder
  • Use DTK6 dtk_install_dconfig mechanism with DCONFIG_OVERRIDE_FILES
  • Only enabled under Qt6 build to ensure Qt5 compatibility

新增 Treeland DConfig override JSON 文件,将 deepin-screen-recorder 的 enablePrelaunchSplash 设为 false,通过 DTK6 的 dtk_install_dconfig 机制安装,仅在 Qt6 构建环境下生效。

Log: 新增Treeland合成器下截图录屏应用预启动闪屏禁用配置

PMS: TASK-389563

Influence: 截图录屏应用在Treeland合成器下启动时不再显示预启动闪屏

- Add DConfig override JSON to disable prelaunch splash for deepin-screen-recorder
- Use DTK6 dtk_install_dconfig mechanism with DCONFIG_OVERRIDE_FILES
- Only enabled under Qt6 build to ensure Qt5 compatibility

新增 Treeland DConfig override JSON 文件,将 deepin-screen-recorder 的
enablePrelaunchSplash 设为 false,通过 DTK6 的 dtk_install_dconfig
机制安装,仅在 Qt6 构建环境下生效。

Log: 新增Treeland合成器下截图录屏应用预启动闪屏禁用配置

PMS: TASK-389563

Influence: 截图录屏应用在Treeland合成器下启动时不再显示预启动闪屏
@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

你好!我是CodeGeeX。我已仔细审查了你提供的 Git Diff,该变更为 deepin-screen-recorder 在 Treeland 环境下添加了禁用预启动闪屏的 DConfig 覆盖配置。

整体来看,这个改动目的明确,结构清晰,符合 DTK/DDE 生态的配置规范。不过,从语法逻辑、代码质量、性能和安全性角度,我仍有以下几点改进建议:

1. 语法与逻辑

  • JSON 语法与规范
    • 提供的 JSON 语法是完全正确的,符合标准 JSON 格式。
    • serial 字段设为 1 对于新增的覆盖配置是合理的,表示初始版本。
    • 逻辑疑点:覆盖配置的目的是覆盖原有值。既然此处的目的是 disable(禁用)闪屏,那么 value: false 在逻辑上是否与该应用默认配置的默认值冲突?如果应用默认就是 false,则此覆盖文件无意义;如果应用默认是 true,则此逻辑正确。请确认被覆盖的底层默认配置。

2. 代码质量

  • qmake 变量命名规范

    • 当前使用的变量名 treeland_splash 能够表达意图,但在 qmake 中,更推荐使用具有明确前缀的命名规范,以防止与 qmake 内置变量或其他模块变量产生命名冲突。
    • 建议:将 treeland_splash 改为 treeland_splash_overridedconfig_override_treeland_splash,例如:
      treeland_splash_override.files = ...
      treeland_splash_override.base = ...
      treeland_splash_override.appid = ...
      treeland_splash_override.meta_name = ...
      DCONFIG_OVERRIDE_FILES += treeland_splash_override
  • 路径的冗余与可维护性

    • treeland_splash.filestreeland_splash.base 中存在大段重复的路径:$$PWD/../assets/treeland/org.deepin.dde.treeland/org.deepin.dde.treeland.app
    • 建议:在 .pro 文件中提取公共路径为变量,增强可维护性,避免后续修改时漏改:
      TREELAND_DCONFIG_BASE = $$PWD/../assets/treeland/org.deepin.dde.treeland/org.deepin.dde.treeland.app
      treeland_splash.files = $$TREELAND_DCONFIG_BASE/deepin-screen-recorder/90-disable-splash.json
      treeland_splash.base = $$TREELAND_DCONFIG_BASE

3. 代码性能

  • 构建性能
    • 将此配置文件加入 DCONFIG_OVERRIDE_FILES 仅影响编译期的文件拷贝和配置生成,对运行时性能无影响。
    • 运行时性能:禁用闪屏(enablePrelaunchSplash: false)实际上减少了图形渲染和资源加载的开销,对于录屏类应用而言,这有助于更快速地启动并减少无关的资源消耗,是一个正向的性能优化。

4. 代码安全

  • 文件权限与完整性
    • 新增的 JSON 文件默认权限为 100644(即所有者读写,组和其他用户只读),对于配置文件来说是安全的。
    • 由于这是只读的覆盖配置(应用运行时不会去写这个文件),不存在并发写入导致的数据损坏问题。
  • DConfig 权限控制
    • JSON 中的 "permissions": "readwrite" 意味着理论上该值可以在运行时被其他具有权限的 DConfig 工具修改。虽然覆盖文件通常具有最高优先级,但需确认这是否符合预期。如果希望强制禁用且不允许任何运行时修改,应考虑权限设定(不过 DConfig 的 readwrite 是标准做法,此处只需确认符合产品需求即可)。

改进后的代码建议

1. 修改后的 src.pro 片段:

# Treeland override: disable prelaunch splash
equals(QT_MAJOR_VERSION, 6) {
    CONFIG += dtk_install_dconfig
    
    # 提取公共路径,提升可维护性
    TREELAND_DCONFIG_BASE = $$PWD/../assets/treeland/org.deepin.dde.treeland/org.deepin.dde.treeland.app
    
    # 使用更具区分度的变量名
    treeland_splash_override.files = $$TREELAND_DCONFIG_BASE/deepin-screen-recorder/90-disable-splash.json
    treeland_splash_override.base = $$TREELAND_DCONFIG_BASE
    treeland_splash_override.appid = org.deepin.dde.treeland
    treeland_splash_override.meta_name = org.deepin.dde.treeland.app
    
    DCONFIG_OVERRIDE_FILES += treeland_splash_override
}

INSTALLS += target icon desktop translations dbus_service manual_dir

2. JSON 文件无需修改,保持原样即可。 但请再次确认被覆盖的原始默认值确实是 true,以保证该覆盖逻辑的有效性。

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dengzhongyuan365-dev, lzwind

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@lzwind lzwind merged commit a893fc8 into linuxdeepin:master May 28, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants