Repository navigation
Conversation
Utility::internAtom() defaults to only_if_exists=true. _DEEPIN_MOVE_UPDATE is a deepin-kwin private atom; on X servers where the window manager does not create it, the lookup returns XCB_NONE, and updateMousePointForWindowMove() sends a ClientMessage whose type field is 0. Clients that select SUBSTRUCTURE_NOTIFY on the root window (e.g. dde-shell's X11WindowMonitor) receive the malformed message, and qtbase logs a confusing "Unhandled client message" warning with an empty atom name. The window manager cannot handle the message anyway, so skip sending it when the atom does not exist. 修复 _DEEPIN_MOVE_UPDATE 缺失时的 "Unhandled client message" 告警: internAtom() 默认 only_if_exists=true,窗管未创建该私有 atom 时查询返回 XCB_NONE,原代码仍会发出 type 为 0 的 ClientMessage;dde-shell 等进程因在 root 上选择 SUBSTRUCTURE_NOTIFY 会收到并触发 qtbase 告警。atom 不存在时 直接跳过——窗管本就无法理解该消息。 PMS: TASK-394335
Reviewer's guide (collapsed on small PRs)Reviewer's GuideThe PR hardens window-move notifications by checking whether the optional _DEEPIN_MOVE_UPDATE atom exists and skipping the ClientMessage when it does not, preventing type-0 events from reaching X11 clients and triggering misleading qtbase warnings. Sequence diagram for guarded window-move notificationsequenceDiagram
participant Caller
participant Utility
participant XServer
participant X11Client
Caller->>Utility: updateMousePointForWindowMove(WId, globalPos, finished)
Utility->>XServer: internAtom(_DEEPIN_MOVE_UPDATE)
alt moveUpdateType == XCB_NONE
Utility-->>Caller: return
else atom exists
Utility->>XServer: xcb_send_event(ClientMessage)
XServer-->>X11Client: valid _DEEPIN_MOVE_UPDATE message
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
|
因为ci更新,PR需要重新开关 |
deepin pr auto review🤖 AI 代码审查报告📊 总体评价
🔍 详细分析1. 语法逻辑 ✅评价: 语法正确,逻辑清晰 ✅ 通过 潜在问题: 建议: [] 2. 代码质量 ✅评价: 代码结构清晰,注释完整 ✅ 通过 潜在问题: 建议: [] 3. 代码性能 ✅评价: 性能良好,资源使用合理 ✅ 通过 潜在问题: 建议: [] 4. 代码安全 🔒评价: 存在0个安全漏洞 ✅ 通过
安全漏洞详情: 建议: [] 💡 改进建议代码示例// 当前修复已完整,无需额外改进。 // internAtom("_DEEPIN_MOVE_UPDATE") 返回 XCB_NONE 时提前返回, // 避免发送无效 ClientMessage,逻辑正确且注释充分。本报告由 AI 代码审查工具自动生成 |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: 18202781743, Ivy233 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 |
Utility::internAtom() defaults to only_if_exists=true. _DEEPIN_MOVE_UPDATE is a deepin-kwin private atom; on X servers where the window manager does not create it, the lookup returns XCB_NONE, and updateMousePointForWindowMove() sends a ClientMessage whose type field is 0. Clients that select SUBSTRUCTURE_NOTIFY on the root window (e.g. dde-shell's X11WindowMonitor) receive the malformed message, and qtbase logs a confusing "Unhandled client message" warning with an empty atom name. The window manager cannot handle the message anyway, so skip sending it when the atom does not exist.
修复 _DEEPIN_MOVE_UPDATE 缺失时的 "Unhandled client message" 告警: internAtom() 默认 only_if_exists=true,窗管未创建该私有 atom 时查询返回 XCB_NONE,原代码仍会发出 type 为 0 的 ClientMessage;dde-shell 等进程因在 root 上选择 SUBSTRUCTURE_NOTIFY 会收到并触发 qtbase 告警。atom 不存在时 直接跳过——窗管本就无法理解该消息。
PMS: TASK-394335
Summary by Sourcery
Bug Fixes: