From f40fcdca2cabbebb59826191a3ec2fca11f0d93a Mon Sep 17 00:00:00 2001 From: Jaewan Kim Date: Fri, 4 Mar 2016 17:58:22 +0900 Subject: [PATCH] PIP: Close PIP if media session is gone This keeps the PIP if there's no media session from the beginning. Bug: 26717072 Change-Id: Idf5bab14d8979c0e50f4451f61bb9355d4562b96 --- .../com/android/systemui/tv/pip/PipManager.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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 123165e3ba3c3..59848cf46d813 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/tv/pip/PipManager.java @@ -66,6 +66,9 @@ public class PipManager { public static final int SUSPEND_PIP_RESIZE_REASON_WAITING_FOR_MENU_ACTIVITY_FINISH = 0x1; public static final int SUSPEND_PIP_RESIZE_REASON_WAITING_FOR_OVERLAY_ACTIVITY_FINISH = 0x2; + + private static final int CLOSE_PIP_WHEN_MEDIA_SESSION_GONE_TIMEOUT_MS = 3000; + private int mSuspendPipResizingReason; private static final float SCALE_FACTOR = 1.1f; @@ -170,6 +173,12 @@ public class PipManager { resizePinnedStack(mState); } }; + private final Runnable mClosePipRunnable = new Runnable() { + @Override + public void run() { + closePip(); + } + }; private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { @Override @@ -281,6 +290,7 @@ public class PipManager { for (int i = mListeners.size() - 1; i >= 0; --i) { mListeners.get(i).onPipActivityClosed(); } + mHandler.removeCallbacks(mClosePipRunnable); } /** @@ -543,6 +553,12 @@ public class PipManager { for (int i = mListeners.size() - 1; i >= 0; i--) { mListeners.get(i).onMediaControllerChanged(); } + if (mPipMediaController == null) { + mHandler.postDelayed(mClosePipRunnable, + CLOSE_PIP_WHEN_MEDIA_SESSION_GONE_TIMEOUT_MS); + } else { + mHandler.removeCallbacks(mClosePipRunnable); + } } }