[Magnifier-20] Raw Surface instead of PopupWindow
Since the movement of PopupWindows is handled by the global window manager, using one does not provide synchronization guarantees between the window movement and its view tree rendering. In the case of the magnifier this was producing a shaky-text effect, when the window was moved in one frame, but the content was only updated in the following one (although the movement and content update were issued during the same #show operation on the UI thread). This CL abandons the usage of a PopupWindow for the magnifier, in favour of a raw Surface whose movement can be controlled using the deferred transactions API. This way, we can defer the surface movement until the frame when the updated content is rendered. The allocated magnifier surface is slightly bigger than the magnifier content to have space for drawing the elevation. We obtain a native elevation by using a RenderNode to draw the content of the magnifier. Bug: 72041926 Test: atest CtsWidgetTestCases:android.widget.cts.MagnifierTest Change-Id: Icb8ecf48a2f528e06790db95d54575f2ae119747
Loading
Please register or sign in to comment