Skip to content

fix(session): force-destroy sandbox surfaces on session removal#1023

Draft
deepin-wm wants to merge 1 commit into
linuxdeepin:masterfrom
deepin-wm:agent/developer/56d31831
Draft

fix(session): force-destroy sandbox surfaces on session removal#1023
deepin-wm wants to merge 1 commit into
linuxdeepin:masterfrom
deepin-wm:agent/developer/56d31831

Conversation

@deepin-wm

Copy link
Copy Markdown
Contributor

Summary

Force-destroy sandbox surfaces on session removal to fix the issue where sandbox app windows (e.g., linglong app store) remain visible after logout.

Changes

  1. Add sessionForClient() that uses uid matching for sandbox clients and socket chain walking for normal clients
  2. Force-destroy all surfaces belonging to removed session in removeSession() to clean up sandbox apps that ignore close
  3. Fix surfaceBelongsToCurrentSession() to use sessionForClient() instead of rootSocket-based check which fails for sandbox apps

Fixes: #347759

1. Add sessionForClient() that uses uid matching for sandbox
   clients and socket chain walking for normal clients
2. Force-destroy all surfaces belonging to removed session in
   removeSession() to clean up sandbox apps that ignore close
3. Fix surfaceBelongsToCurrentSession() to use sessionForClient()
   instead of rootSocket-based check which fails for sandbox apps

Log: Fixed sandbox app windows remaining visible after logout

Influence:
1. Test sandbox apps (linglong) are closed on logout and re-login
2. Verify system UI (Dock, launcher) is not affected on logout
3. Test multi-user switching with sandbox apps

fix(session): 会话移除时强制销毁沙盒应用窗口

1. 新增 sessionForClient() 方法,对沙盒客户端使用 uid
   匹配,对普通客户端使用 socket 父链遍历
2. 在 removeSession() 中强制销毁属于该会话的所有表面,
   清理忽略关闭请求的沙盒应用
3. 修复 surfaceBelongsToCurrentSession(),使用
   sessionForClient() 替代基于 rootSocket 的判断

Log: 修复注销后沙盒应用窗口残留的问题

Influence:
1. 测试沙盒应用(玲珑应用商店)注销后重新登录窗口是否关闭
2. 验证系统 UI(任务栏、启动器)注销时不受影响
3. 测试多用户切换场景下沙盒应用的隔离性

Fixes: #347759

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @deepin-wm, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: deepin-wm

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

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.

2 participants