diff options
author | 2016-01-26 17:51:33 -0800 | |
---|---|---|
committer | 2016-02-22 11:03:00 -0800 | |
commit | 23df699451c3bb4fcb0121702a48f38c0fe19b04 (patch) | |
tree | c1b08e70748170f42d06c2afbacedeb93899f8bc | |
parent | 40089ca9950221d633e8e8662384a2ae132aa236 (diff) |
Close PIP when PIP activity is finished
Bug: 26717072
Change-Id: I5dd431b0ee64ca152bd49013bb6bbb3e8d9fba71
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java | 35 |
1 files changed, 30 insertions, 5 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 fac6338d1505..6b943e09ad53 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java @@ -101,7 +101,26 @@ public class PipManager { @Override public void run() { if (mState != STATE_NO_PIP) { - // TODO: check whether PIP task is closed. + StackInfo stackInfo = null; + try { + stackInfo = mActivityManager.getStackInfo(PINNED_STACK_ID); + if (stackInfo == null) { + Log.w(TAG, "There is no pinned stack"); + closeInternal(false); + return; + } + } catch (RemoteException e) { + Log.e(TAG, "getStackInfo failed", e); + return; + } + for (int i = stackInfo.taskIds.length - 1; i >= 0; --i) { + if (stackInfo.taskIds[i] == mPipTaskId) { + // PIP task is still alive. + return; + } + } + // PIP task doesn't exist anymore in PINNED_STACK. + closeInternal(true); } } }; @@ -203,12 +222,18 @@ public class PipManager { * Closes PIP (PIPed activity and PIP system UI). */ public void closePip() { + closeInternal(true); + } + + private void closeInternal(boolean removePipStack) { mState = STATE_NO_PIP; mPipTaskId = TASK_ID_NO_PIP; - try { - mActivityManager.removeStack(PINNED_STACK_ID); - } catch (RemoteException e) { - Log.e(TAG, "removeStack failed", e); + if (removePipStack) { + try { + mActivityManager.removeStack(PINNED_STACK_ID); + } catch (RemoteException e) { + Log.e(TAG, "removeStack failed", e); + } } } |