Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b5ed590 authored by Issei Suzuki's avatar Issei Suzuki
Browse files

Fix bubble shows empty content after rotating the device.

When the device is rotated while a Bubble is expanded, the following
things happen after the device rotation.
1. an activity of the Bubble is started, and app transition
   TRANSIT_SHOW_SINGLE_TASK_DISPLAY is prepared.
2. the server waits until the Bubble activity draws contents on its
   surface, i.e. an app transition is executed.
3. the server trigger ITaskStackListner#onSingleTaskDisplayDrawn
4. SysUI makes a Surface of the Bubble activity opaque.

Depending on the status of Bubble activity, another app transition can
be prepared before the first step above, which is sticky so prevents
taking the following steps.

This change allows to override an app transition which has already been
prepared, so an app transition TRANSIT_SHOW_SINGLE_TASK_DISPLAY is
always executed; thus callback is triggered.

Bug: 158675422
Test: manual, open a Bubble and rotate device several times.
Change-Id: I24fb649c1301e5f5a2443f3eaed166049b5f6108
parent 76cfda57
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2058,7 +2058,12 @@ class ActivityStack extends Task {
                    if (r.mLaunchTaskBehind) {
                        transit = TRANSIT_TASK_OPEN_BEHIND;
                    } else if (getDisplay().isSingleTaskInstance()) {
                        // If a new task is being launched in a single task display, we don't need
                        // to play normal animation, but need to trigger a callback when an app
                        // transition is actually handled. So ignore already prepared activity, and
                        // override it.
                        transit = TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
                        keepCurTransition = false;
                    } else {
                        // If a new task is being launched, then mark the existing top activity as
                        // supporting picture-in-picture while pausing only if the starting activity