From 8290f8f66a75e89ac3ef4d399798486e7d8682a8 Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Thu, 30 Jun 2016 17:51:32 -0700 Subject: [PATCH] Always send task stack change updates if PiP is enabled PiP stack repositioning is triggered when task stack change is detected. Usually these updates are sent when there was a visibility change since last pause. In case when we're navigating from setting back to launcher on TV there is no visibility change. This happened to work in most cases because PipOverlayActivity was shown or hidden somewhere between user actions. This CL always notifies about task stack changes if pinned stack is present on activity pause. Bug: 29344059 Change-Id: I5ab3f2b8a97983fcb79d58626b6494f8ec31dbf3 --- .../src/com/android/systemui/tv/pip/PipManager.java | 2 +- .../core/java/com/android/server/am/ActivityStack.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java b/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java index 30622d29b9a92..5cc2d01fc041c 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java @@ -528,7 +528,7 @@ public class PipManager { private static boolean isSettingsShown(ComponentName topActivity) { for (Pair componentName : sSettingsPackageAndClassNamePairList) { String packageName = componentName.first; - if (topActivity.getPackageName().equals(componentName.first)) { + if (topActivity.getPackageName().equals(packageName)) { String className = componentName.second; if (className == null || topActivity.getClassName().equals(className)) { return true; diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 4ead64b6915bc..2673854b72c2e 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1350,8 +1350,11 @@ final class ActivityStack { prev.cpuTimeAtResume = 0; // reset it } - // Notify when the task stack has changed, but only if visibilities changed (not just focus) - if (mStackSupervisor.mAppVisibilitiesChangedSinceLastPause) { + // Notify when the task stack has changed, but only if visibilities changed (not just + // focus). Also if there is an active pinned stack - we always want to notify it about + // task stack changes, because its positioning may depend on it. + if (mStackSupervisor.mAppVisibilitiesChangedSinceLastPause + || mService.mStackSupervisor.getStack(PINNED_STACK_ID) != null) { mService.notifyTaskStackChangedLocked(); mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = false; }