Loading core/java/android/app/ActivityManager.java +4 −0 Original line number Diff line number Diff line Loading @@ -2370,6 +2370,8 @@ public class ActivityManager { public int displayId; public int userId; public boolean visible; // Index of the stack in the display's stack list, can be used for comparison of stack order public int position; @Override public int describeContents() { Loading Loading @@ -2397,6 +2399,7 @@ public class ActivityManager { dest.writeInt(displayId); dest.writeInt(userId); dest.writeInt(visible ? 1 : 0); dest.writeInt(position); if (topActivity != null) { dest.writeInt(1); topActivity.writeToParcel(dest, 0); Loading Loading @@ -2426,6 +2429,7 @@ public class ActivityManager { displayId = source.readInt(); userId = source.readInt(); visible = source.readInt() > 0; position = source.readInt(); if (source.readInt() > 0) { topActivity = ComponentName.readFromParcel(source); } Loading packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +10 −2 Original line number Diff line number Diff line Loading @@ -371,11 +371,19 @@ public class SystemServicesProxy { try { ActivityManager.StackInfo stackInfo = mIam.getStackInfo( ActivityManager.StackId.HOME_STACK_ID); ActivityManager.StackInfo fullscreenStackInfo = mIam.getStackInfo( ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID); ComponentName topActivity = stackInfo.topActivity; boolean homeStackVisibleNotOccluded = stackInfo.visible; if (fullscreenStackInfo != null) { boolean isFullscreenStackOccludingHome = fullscreenStackInfo.visible && fullscreenStackInfo.position > stackInfo.position; homeStackVisibleNotOccluded &= !isFullscreenStackOccludingHome; } if (isHomeStackVisible != null) { isHomeStackVisible.value = stackInfo.visible; isHomeStackVisible.value = homeStackVisibleNotOccluded; } return (stackInfo.visible && topActivity != null return (homeStackVisibleNotOccluded && topActivity != null && topActivity.getPackageName().equals(RecentsImpl.RECENTS_PACKAGE) && (topActivity.getClassName().equals(RecentsImpl.RECENTS_ACTIVITY) || topActivity.getClassName().equals(RecentsTvImpl.RECENTS_TV_ACTIVITY))); Loading services/core/java/com/android/server/am/ActivityStackSupervisor.java +4 −1 Original line number Diff line number Diff line Loading @@ -123,7 +123,6 @@ import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS; import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; Loading Loading @@ -3406,12 +3405,16 @@ public final class ActivityStackSupervisor implements DisplayListener { } private StackInfo getStackInfoLocked(ActivityStack stack) { final ActivityDisplay display = mActivityDisplays.get(Display.DEFAULT_DISPLAY); StackInfo info = new StackInfo(); mWindowManager.getStackBounds(stack.mStackId, info.bounds); info.displayId = Display.DEFAULT_DISPLAY; info.stackId = stack.mStackId; info.userId = stack.mCurrentUser; info.visible = stack.getStackVisibilityLocked(null) == STACK_VISIBLE; info.position = display != null ? display.mStacks.indexOf(stack) : 0; ArrayList<TaskRecord> tasks = stack.getAllTasks(); final int numTasks = tasks.size(); Loading Loading
core/java/android/app/ActivityManager.java +4 −0 Original line number Diff line number Diff line Loading @@ -2370,6 +2370,8 @@ public class ActivityManager { public int displayId; public int userId; public boolean visible; // Index of the stack in the display's stack list, can be used for comparison of stack order public int position; @Override public int describeContents() { Loading Loading @@ -2397,6 +2399,7 @@ public class ActivityManager { dest.writeInt(displayId); dest.writeInt(userId); dest.writeInt(visible ? 1 : 0); dest.writeInt(position); if (topActivity != null) { dest.writeInt(1); topActivity.writeToParcel(dest, 0); Loading Loading @@ -2426,6 +2429,7 @@ public class ActivityManager { displayId = source.readInt(); userId = source.readInt(); visible = source.readInt() > 0; position = source.readInt(); if (source.readInt() > 0) { topActivity = ComponentName.readFromParcel(source); } Loading
packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +10 −2 Original line number Diff line number Diff line Loading @@ -371,11 +371,19 @@ public class SystemServicesProxy { try { ActivityManager.StackInfo stackInfo = mIam.getStackInfo( ActivityManager.StackId.HOME_STACK_ID); ActivityManager.StackInfo fullscreenStackInfo = mIam.getStackInfo( ActivityManager.StackId.FULLSCREEN_WORKSPACE_STACK_ID); ComponentName topActivity = stackInfo.topActivity; boolean homeStackVisibleNotOccluded = stackInfo.visible; if (fullscreenStackInfo != null) { boolean isFullscreenStackOccludingHome = fullscreenStackInfo.visible && fullscreenStackInfo.position > stackInfo.position; homeStackVisibleNotOccluded &= !isFullscreenStackOccludingHome; } if (isHomeStackVisible != null) { isHomeStackVisible.value = stackInfo.visible; isHomeStackVisible.value = homeStackVisibleNotOccluded; } return (stackInfo.visible && topActivity != null return (homeStackVisibleNotOccluded && topActivity != null && topActivity.getPackageName().equals(RecentsImpl.RECENTS_PACKAGE) && (topActivity.getClassName().equals(RecentsImpl.RECENTS_ACTIVITY) || topActivity.getClassName().equals(RecentsTvImpl.RECENTS_TV_ACTIVITY))); Loading
services/core/java/com/android/server/am/ActivityStackSupervisor.java +4 −1 Original line number Diff line number Diff line Loading @@ -123,7 +123,6 @@ import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.pm.ActivityInfo.FLAG_SHOW_FOR_ALL_USERS; import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_ALL; Loading Loading @@ -3406,12 +3405,16 @@ public final class ActivityStackSupervisor implements DisplayListener { } private StackInfo getStackInfoLocked(ActivityStack stack) { final ActivityDisplay display = mActivityDisplays.get(Display.DEFAULT_DISPLAY); StackInfo info = new StackInfo(); mWindowManager.getStackBounds(stack.mStackId, info.bounds); info.displayId = Display.DEFAULT_DISPLAY; info.stackId = stack.mStackId; info.userId = stack.mCurrentUser; info.visible = stack.getStackVisibilityLocked(null) == STACK_VISIBLE; info.position = display != null ? display.mStacks.indexOf(stack) : 0; ArrayList<TaskRecord> tasks = stack.getAllTasks(); final int numTasks = tasks.size(); Loading