From f04c1dd047be918c7cababcfdc36c48d873f2d70 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Fri, 24 Feb 2017 16:47:37 -0800 Subject: [PATCH] Fixing regression when going to fullscreen from PiP. - Just ensure that we don't resize the stack if it's already not visible. Bug: 35338156 Test: Enter/exit pip on TV Change-Id: I0bd234dd18ecd3d7d4cb37edad9f1fb3053d96bb --- .../android/systemui/pip/tv/PipManager.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) 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 20866c06b16bf..8f7a81c2fd768 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java @@ -337,12 +337,11 @@ public class PipManager implements BasePipManager { * Moves the PIPed activity to the fullscreen and closes PIP system UI. */ void movePipToFullscreen() { - mState = STATE_NO_PIP; mPipTaskId = TASK_ID_NO_PIP; for (int i = mListeners.size() - 1; i >= 0; --i) { mListeners.get(i).onMoveToFullscreen(); } - resizePinnedStack(mState); + resizePinnedStack(STATE_NO_PIP); updatePipVisibility(false); } @@ -388,6 +387,7 @@ public class PipManager implements BasePipManager { if (DEBUG) Log.d(TAG, "resizePinnedStack() state=" + state); boolean wasRecentsShown = (mState == STATE_PIP_RECENTS || mState == STATE_PIP_RECENTS_FOCUSED); + boolean wasStateNoPip = (mState == STATE_NO_PIP); mState = state; for (int i = mListeners.size() - 1; i >= 0; --i) { mListeners.get(i).onPipResizeAboutToStart(); @@ -401,6 +401,11 @@ public class PipManager implements BasePipManager { switch (mState) { case STATE_NO_PIP: mCurrentPipBounds = null; + // If the state was already STATE_NO_PIP, then do not resize the stack below as it + // will not exist + if (wasStateNoPip) { + return; + } break; case STATE_PIP_MENU: mCurrentPipBounds = mMenuModePipBounds; @@ -418,18 +423,16 @@ public class PipManager implements BasePipManager { mCurrentPipBounds = mPipBounds; break; } - if (mCurrentPipBounds != null) { - try { - int animationDurationMs = -1; - if (wasRecentsShown - && (mState == STATE_PIP_RECENTS || mState == STATE_PIP_RECENTS_FOCUSED)) { - animationDurationMs = mRecentsFocusChangedAnimationDurationMs; - } - mActivityManager.resizeStack(PINNED_STACK_ID, mCurrentPipBounds, - true, true, true, animationDurationMs); - } catch (RemoteException e) { - Log.e(TAG, "resizeStack failed", e); + try { + int animationDurationMs = -1; + if (wasRecentsShown + && (mState == STATE_PIP_RECENTS || mState == STATE_PIP_RECENTS_FOCUSED)) { + animationDurationMs = mRecentsFocusChangedAnimationDurationMs; } + mActivityManager.resizeStack(PINNED_STACK_ID, mCurrentPipBounds, + true, true, true, animationDurationMs); + } catch (RemoteException e) { + Log.e(TAG, "resizeStack failed", e); } }