summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jorim Jaggi <jjaggi@google.com> 2018-06-26 04:52:45 -0700
committer android-build-merger <android-build-merger@google.com> 2018-06-26 04:52:45 -0700
commit226d11f980b7c0ab02699df0cf5f3d209235f5bb (patch)
tree4e26c7443593f91d3b2dadc68efd1e4950d53428
parentdc5f024a6ce6140342f9a3044fb7de88c173a552 (diff)
parent72039c7a7c24f87dcf63deafdb644985b683afa2 (diff)
Merge "Defer stop for all activities becoming invisible" into pi-dev am: fd77e69f28
am: 72039c7a7c Change-Id: Ia624934e99a85028b20fc261da13cf9c7d1e71a7
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java10
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java4
2 files changed, 14 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 05e1893bf4f3..dae145de18d2 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1654,6 +1654,16 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
void addToStopping(ActivityRecord r, boolean scheduleIdle, boolean idleDelayed) {
if (!mStackSupervisor.mStoppingActivities.contains(r)) {
mStackSupervisor.mStoppingActivities.add(r);
+
+ // Some activity is waiting for another activity to become visible before it's being
+ // stopped, which means that we also want to wait with stopping this one to avoid
+ // flickers.
+ if (!mStackSupervisor.mActivitiesWaitingForVisibleActivity.isEmpty()
+ && !mStackSupervisor.mActivitiesWaitingForVisibleActivity.contains(r)) {
+ if (DEBUG_SWITCH) Slog.i(TAG_SWITCH, "adding to waiting visible activity=" + r
+ + " existing=" + mStackSupervisor.mActivitiesWaitingForVisibleActivity);
+ mStackSupervisor.mActivitiesWaitingForVisibleActivity.add(r);
+ }
}
// If we already have a few activities waiting to stop, then give up
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index f49943e2f0c8..1cb6be6136b1 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -3899,6 +3899,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
stops = new ArrayList<>();
}
stops.add(s);
+
+ // Make sure to remove it in all cases in case we entered this block with
+ // shouldSleepOrShutDown
+ mActivitiesWaitingForVisibleActivity.remove(s);
mStoppingActivities.remove(activityNdx);
}
}