diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityRecord.java | 5 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wm/AppWindowContainerController.java | 18 |
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=" |