diff options
| author | 2018-05-31 20:43:09 -0700 | |
|---|---|---|
| committer | 2018-05-31 20:43:09 -0700 | |
| commit | 5ccabc2c665dec978dde8be73d26d31f12c1e775 (patch) | |
| tree | 0199df0df2b136c87fcc873ca1782a4542ef154a | |
| parent | 7236332a7462a774c9607b6601ff98875d8a754c (diff) | |
| parent | 83bf0877b89c152e5f913a2e45ec67d19572ad66 (diff) | |
Merge "Update the task stack state when resizing the tasks after the PiP animation" into pi-dev
am: 83bf0877b8
Change-Id: Ic5af6c8eb39025f76c89ea8900ca2302c00ff209
4 files changed, 28 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 3ad461f9b1b0..748eae951379 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -134,7 +134,6 @@ import android.os.Looper;  import android.os.Message;  import android.os.RemoteException;  import android.os.SystemClock; -import android.os.Trace;  import android.os.UserHandle;  import android.service.voice.IVoiceInteractionSession;  import android.util.ArraySet; @@ -4789,6 +4788,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai          }      } +    void onPipAnimationEndResize() { +        mWindowContainerController.onPipAnimationEndResize(); +    } +      /**       * Adjust bounds to stay within stack bounds. diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 257d79d2c153..76cc3425d060 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -2968,6 +2968,12 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D                  insetBounds.right = tempPinnedTaskBounds.width();                  insetBounds.bottom = tempPinnedTaskBounds.height();              } +            if (pinnedBounds != null && tempPinnedTaskBounds == null) { +                // We have finished the animation into PiP, and are resizing the tasks to match the +                // stack bounds, while layouts are deferred, update any task state as a part of +                // transitioning it from fullscreen into a floating state. +                stack.onPipAnimationEndResize(); +            }              stack.resize(pinnedBounds, tempPinnedTaskBounds, insetBounds);              stack.ensureVisibleActivitiesConfigurationLocked(r, false);          } finally { diff --git a/services/core/java/com/android/server/wm/StackWindowController.java b/services/core/java/com/android/server/wm/StackWindowController.java index 653850aa288f..1fd2c0fd19c5 100644 --- a/services/core/java/com/android/server/wm/StackWindowController.java +++ b/services/core/java/com/android/server/wm/StackWindowController.java @@ -192,6 +192,12 @@ public class StackWindowController          }      } +    public void onPipAnimationEndResize() { +        synchronized (mService.mWindowMap) { +            mContainer.onPipAnimationEndResize(); +        } +    } +      /**       * @see TaskStack.getStackDockedModeBoundsLocked(Rect, Rect, Rect, boolean)       */ diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index 2fbb84604598..c59540b3d088 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -1667,16 +1667,6 @@ public class TaskStack extends WindowContainer<Task> implements      @Override  // AnimatesBounds      public void onAnimationEnd(boolean schedulePipModeChangedCallback, Rect finalStackSize,              boolean moveToFullscreen) { -        // Hold the lock since this is called from the BoundsAnimator running on the UiThread -        synchronized (mService.mWindowMap) { -            mBoundsAnimating = false; -            for (int i = 0; i < mChildren.size(); i++) { -                final Task t = mChildren.get(i); -                t.clearPreserveNonFloatingState(); -            } -            mService.requestTraversal(); -        } -          if (inPinnedWindowingMode()) {              // Update to the final bounds if requested. This is done here instead of in the bounds              // animator to allow us to coordinate this after we notify the PiP mode changed @@ -1706,6 +1696,18 @@ public class TaskStack extends WindowContainer<Task> implements          }      } +    /** +     * Called immediately prior to resizing the tasks at the end of the pinned stack animation. +     */ +    public void onPipAnimationEndResize() { +        mBoundsAnimating = false; +        for (int i = 0; i < mChildren.size(); i++) { +            final Task t = mChildren.get(i); +            t.clearPreserveNonFloatingState(); +        } +        mService.requestTraversal(); +    } +      @Override      public boolean shouldDeferStartOnMoveToFullscreen() {          // Workaround for the recents animation -- normally we need to wait for the new activity to  |