Pull Request已成功合入, 合并人@openharmony_ci
(感谢 mobhot 的贡献)static-check


感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接。
Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.


您好,Committer @nyankomiya @logn @chyyy0213 @hejunfei1991 @stupidb @lollipopolive @JUGaaab ,请分配检视人员检视该PR,可以通过命令"assign [@someone_id]"分配检视人员,也可以直接评论"assign"分配给自己进行检视。
Hello, Committer @nyankomiya @logn @chyyy0213 @hejunfei1991 @stupidb @lollipopolive @JUGaaab . Please assign someone to review the PR. You can assign a reviewer by using the command "assign [@someone_id]", or you can comment "assign" to review the PR by yourself.


概述
修复 hidumper 中「Client screen Infos」的 AvailableArea 在屏幕旋转、折叠后不刷新的问题。
变更类型
根因
客户端 ScreenSession 的本地缓存
availableArea_在多个写入路径上漏更新:UpdateAvailableArea/UpdateSuperFoldAvailableArea)只转发给服务端,未回写本地ProcPropertyChange)构建本地screenProperty时漏取 availableArea 字段导致客户端本地缓存一直是旧值,而服务端正确。hidumper 的「Client screen Infos」段和 SCB 都读本地缓存,所以读到的 availableArea 是 stale 的。
变更内容
主要变更(3 处,互补不冗余)
ScreenSessionManagerClient::UpdateAvailableArea:转发给服务端前,先调用本地ScreenSession::SetAvailableArea同步客户端缓存。ScreenSessionManagerClient::UpdateSuperFoldAvailableArea:转发前,先把主屏bArea写回本地ScreenSession缓存。ScreenSession::ProcPropertyChange:从服务端推下来的eventPara同步字段到本地构建中的screenProperty时,补上SetAvailableArea(eventPara.GetAvailableArea())。影响范围
screen_session_manager_client.cpp:客户端可用区域缓存一致性(旋转、三折叠上报)screen_session.cpp:折叠态切换时服务端推送路径的本地构建(双折叠/单折叠/翻盖)场景覆盖说明
三个改动覆盖不同设备 × 不同数据方向,互补不冗余:
UpdateAvailableAreaUpdateSuperFoldAvailableAreaProcPropertyChange旋转场景
SCB 算新 area → NAPI
updateAvailableArea→UpdateAvailableArea(改动1)→ 写本地缓存 + IPC 上报服务端。旋转 bounds 走
ModifyScreenPropertyWithLock,不经过ProcPropertyChange,由改动1 独占覆盖。折叠场景
ProcPropertyChange(改动3)→ 本地副本带上 availableArea。ProcPropertyChange的 SuperFold 分支提前 return(走ProcPropertyChangedForSuperFold,不碰 availableArea),由 SCB 算好后通过 NAPIupdateSuperFoldAvailableArea→UpdateSuperFoldAvailableArea(改动2)上报,写本地缓存(bArea)。测试
Closes #14997