Merge "Fixing regression in PiP TV." into oc-dev
diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java
index dd8cd2b..ad290c3 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java
@@ -113,6 +113,7 @@
     private IWindowManager mWindowManager;
     private MediaSessionManager mMediaSessionManager;
     private int mState = STATE_NO_PIP;
+    private int mResumeResizePinnedStackRunnable = STATE_NO_PIP;
     private final Handler mHandler = new Handler();
     private List<Listener> mListeners = new ArrayList<>();
     private List<MediaListener> mMediaListeners = new ArrayList<>();
@@ -133,7 +134,7 @@
     private final Runnable mResizePinnedStackRunnable = new Runnable() {
         @Override
         public void run() {
-            resizePinnedStack(mState);
+            resizePinnedStack(mResumeResizePinnedStackRunnable);
         }
     };
     private final Runnable mClosePipRunnable = new Runnable() {
@@ -364,16 +365,17 @@
     void resizePinnedStack(int state) {
         if (DEBUG) Log.d(TAG, "resizePinnedStack() state=" + state);
         boolean wasStateNoPip = (mState == STATE_NO_PIP);
-        mState = state;
+        mResumeResizePinnedStackRunnable = state;
         for (int i = mListeners.size() - 1; i >= 0; --i) {
             mListeners.get(i).onPipResizeAboutToStart();
         }
         if (mSuspendPipResizingReason != 0) {
-            if (DEBUG) Log.d(TAG,
-                    "resizePinnedStack() deferring mSuspendPipResizingReason=" +
-                            mSuspendPipResizingReason);
+            if (DEBUG) Log.d(TAG, "resizePinnedStack() deferring"
+                    + " mSuspendPipResizingReason=" + mSuspendPipResizingReason
+                    + " mResumeResizePinnedStackRunnable=" + mResumeResizePinnedStackRunnable);
             return;
         }
+        mState = state;
         switch (mState) {
             case STATE_NO_PIP:
                 mCurrentPipBounds = null;
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index c65ca79..36cd34d1 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -2506,9 +2506,8 @@
                         fullscreenStack.getStackVisibilityLocked(null) == STACK_VISIBLE;
                 for (int i = 0; i < tasks.size(); i++) {
                     // Insert the task either at the top of the fullscreen stack if it is hidden,
-                    // or just under the top task if it is currently visible
-                    final int insertPosition = isFullscreenStackVisible
-                            ? Math.max(0, fullscreenStack.getChildCount() - 1)
+                    // or to the bottom if it is currently visible
+                    final int insertPosition = isFullscreenStackVisible ? 0
                             : fullscreenStack.getChildCount();
                     final TaskRecord task = tasks.get(i);
                     // Defer resume until we remove all the tasks