summaryrefslogtreecommitdiff
path: root/tools/aapt2/java/JavaClassGenerator.cpp
diff options
context:
space:
mode:
authorRobert Carr <racarr@google.com>2016-02-02 22:43:27 -0800
committerRob Carr <racarr@google.com>2016-02-08 20:46:53 +0000
commite12aece4cad849efbbe6a806f132613a56699230 (patch)
tree4d8c0f1b9c720fa3042180f2d06dcf5fb05daa6e /tools/aapt2/java/JavaClassGenerator.cpp
parent5affef077316e73337eb42a098a126b01d20568e (diff)
Ensure surfaces stay alive until activity stop.
Prior to this commit in this case of activity pause, with finishing=true the activity manager will notify us of app visibility and we will begin an exit animation. When this exit animation finishes, we will destroy the application surface (unless its eligible for saving). However there are two cases where this breaks down: 1. The exit animation finishes before the activity thread handles the stop transition. Many activities stop rendering on Pause but many do not and it is totally legal to do so. Sometimes this results in non fatal dequeue buffer errors and sometimes results in fatal errors with Pixel Buffers, etc... 2. We may resume the activity shortly after asking the window manager to pause it. If the window wasn't eligible for animation, we will immediately destroy it after being told of the visibility change following PAUSE_FINISHING. It's possible for this to complete before we process the resume. On the other hand the client happilly processes the resume and transitions back from PAUSE and then crashes once it attempts to use it's surface. In this commit we have the activity manager notify the window manager when an application has actually finished (or we have timed out waiting). For windows which have not been explicitly removed by the client, we defer destruction until we have received both this signal and the animation has completed. Bug: 26793431 Change-Id: Ib6ee8fbdd1f03450fbbfd62468a19e97774befab
Diffstat (limited to 'tools/aapt2/java/JavaClassGenerator.cpp')
0 files changed, 0 insertions, 0 deletions