summaryrefslogtreecommitdiff
path: root/libs/androidfw/StringPool.cpp
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2023-04-14 23:35:36 +0800
committer Riddle Hsu <riddlehsu@google.com> 2023-04-14 23:38:10 +0800
commit6fe7b0757a8d1488bb4ad8d27e4f395ea5b1e1fd (patch)
tree804ad346e42740b20704a821cc9ccf7fb9764ded /libs/androidfw/StringPool.cpp
parentb4a8a82fa927597775483f8a0391856d7dc1399e (diff)
Set client invisible immediately for trampoline with window
Since shell transition moves "commit invisible" from transition ready to transition finish. The relayout from a invisible-requested client may still enter WindowState#relayoutVisibleWindow because it is still client-visible. If the client is a trampoline activity, then it will draw an unnecessary frame because the client considers it needs to report draw complete for the first traversal. The flow: 1. Start activity A - Assume there is a starting window for it 2. A's onCreate starts activity B - Starting window is transferred from A to B - Schedule A to pause 3. A continues to resume and add its window, receive pause request 4. A completes paused - Resume B, set visibility to false for B - Assume starting window was drawn so trigger transition ready 5. A performs traversal by previous resume. - Relayout returns RELAYOUT_RES_FIRST_TIME if the client visibility ActivityRecord is true - ViewRootImpl executes reportNextDraw("first_relayout") Note that it has no such problem if the trampoline activity finishes itself right after starting next activity, because client will skip adding window by the finishing state. Bug: 277303796 Test: Launch an activity which starts another activity in its onCreate. Change-Id: I4196056b7f6b6161b431cb80444c9d86fef9492a
Diffstat (limited to 'libs/androidfw/StringPool.cpp')
0 files changed, 0 insertions, 0 deletions