Avoid showing/hiding task surfaces in window decor relayout
WindowDecorations relayout in both transition callbacks and
onTaskInfoChanged callbacks, which can sometimes cause the task surface
to be shown or hidden too early during a task animation because
onTaskInfoChanged might get invoked before the animation plays or
finishes.
This change removes show()/hide() calls on the task surface in window
decoration #relayout to leave that responsibility entirely to the
transition handlers, with the exception of #relayouts originating from
onTaskInfoChanged during fluid drag-resizing gestures, which we know
aren't using shell transitions. Similar logic already existed for
setting the task position/crop, so visibility updates are just added to
the existing mechanism they use.
Fix: 365703208
Test: Enter PIP with a multi-activity app (e.g. Netflix), verify there's
no flicker where the surface disappears for 1 frame towards the end of
the animation.
Flag: EXEMPT refactor
Change-Id: Ib215d5fa5005a7270e2f154a1a18111749554e36
4 files changed