summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/am/ActivityRecord.java5
-rw-r--r--services/core/java/com/android/server/wm/AppWindowContainerController.java18
2 files changed, 18 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 55ec3b0d890d..5636e197aaee 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -284,7 +284,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
boolean visible; // does this activity's window need to be shown?
boolean visibleIgnoringKeyguard; // is this activity visible, ignoring the fact that Keyguard
// might hide this activity?
- private boolean mLastSetWindowVisibility; // The last window visibility state that was set.
private boolean mDeferHidingClient; // If true we told WM to defer reporting to the client
// process that it is hidden.
boolean sleeping; // have we told the activity to sleep?
@@ -1589,10 +1588,6 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
}
void setVisibility(boolean visible) {
- if (mLastSetWindowVisibility == visible) {
- return;
- }
- mLastSetWindowVisibility = visible;
mWindowContainerController.setVisibility(visible, mDeferHidingClient);
mStackSupervisor.mActivityMetricsLogger.notifyVisibilityChanged(this, visible);
}
diff --git a/services/core/java/com/android/server/wm/AppWindowContainerController.java b/services/core/java/com/android/server/wm/AppWindowContainerController.java
index c982f081d624..479a112c562a 100644
--- a/services/core/java/com/android/server/wm/AppWindowContainerController.java
+++ b/services/core/java/com/android/server/wm/AppWindowContainerController.java
@@ -348,6 +348,24 @@ public class AppWindowContainerController
final AppWindowToken wtoken = mContainer;
+ // Don't set visibility to false if we were already not visible. This prevents WM from
+ // adding the app to the closing app list which doesn't make sense for something that is
+ // already not visible. However, set visibility to true even if we are already visible.
+ // This makes sure the app is added to the opening apps list so that the right
+ // transition can be selected.
+ // TODO: Probably a good idea to separate the concept of opening/closing apps from the
+ // concept of setting visibility...
+ if (!visible && wtoken.hiddenRequested) {
+
+ if (!deferHidingClient && wtoken.mDeferHidingClient) {
+ // We previously deferred telling the client to hide itself when visibility was
+ // initially set to false. Now we would like it to hide, so go ahead and set it.
+ wtoken.mDeferHidingClient = deferHidingClient;
+ wtoken.setClientHidden(true);
+ }
+ return;
+ }
+
if (DEBUG_APP_TRANSITIONS || DEBUG_ORIENTATION) Slog.v(TAG_WM, "setAppVisibility("
+ mToken + ", visible=" + visible + "): " + mService.mAppTransition
+ " hidden=" + wtoken.hidden + " hiddenRequested="