Introduce IWindowSession#relayoutAsync
IWindowSession#relayoutAsync is similar to IWindowSession#relayout, but the former is an oneway method which just sends the layout attributes to the server. Since the client can compute its own window frame, it just needs to send attributes to the server without getting blocked for receving the window frame. In somes cases, the client still needs to obtain things from the server. Such as: - When view visibility is changed. The client maybe not be able to receive the latest insets state while it is INVISIBLE or GONE. In this case, the client needs to obtain the frame and the insets state. Also, the client need to obtain the surface control when it becomes VISIBLE. - When the insets state is stale but the config is up-to-date. This can happen when WindowProcessController sends the new config to the client before WindowState does. In this case, the client needs to obtain the window frame from the server. - When the position and the size of the frame are both changed. This will trigger a BLAST sync, and the client needs to obtain the sync seq ID. For cases above, the client needs to call the original relayout method. Bug: 161810301 Bug: 175861051 Test: Seamless rotation, fixed rotation, and regular rotation. Merged-In: Ifb365789fa08103773fd3180e486ba1d92042fc5 Change-Id: Ifb365789fa08103773fd3180e486ba1d92042fc5
Loading
Please register or sign in to comment