From 4de8e7c1a55f024361786e9fe03fa6eec1db6cb7 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Mon, 28 Oct 2013 07:16:41 -0700 Subject: [PATCH] MediaPlayer: MTP: update state only based on source events State only depends on events from the MediaPlayer (this includes the pseudo-event from MTP recovery mechanism.) Change-Id: Idd62a773d2386ad6bfbfe417412c2e2ff09b3600 Signed-off-by: Lajos Molnar Bug: 11412881 --- media/java/android/media/MediaPlayer.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index 0abd5f861d43..706258a9cd85 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -2861,8 +2861,6 @@ public class MediaPlayer implements SubtitleController.Listener } if (DEBUG) Log.v(TAG, "scheduleNotification " + type + " in " + delayUs); - mStopped = type == NOTIFY_STOP; - mSeeking = type == NOTIFY_SEEK; mEventHandler.removeMessages(NOTIFY); Message msg = mEventHandler.obtainMessage(NOTIFY, type, 0); mEventHandler.sendMessageDelayed(msg, (int) (delayUs / 1000)); @@ -2889,9 +2887,12 @@ public class MediaPlayer implements SubtitleController.Listener synchronized(this) { if (DEBUG) Log.d(TAG, "onPaused: " + paused); if (mStopped) { // handle as seek if we were stopped + mStopped = false; + mSeeking = true; scheduleNotification(NOTIFY_SEEK, 0 /* delay */); } else { mPausing = paused; // special handling if player disappeared + mSeeking = false; scheduleNotification(REFRESH_AND_NOTIFY_TIME, 0 /* delay */); } } @@ -2902,6 +2903,8 @@ public class MediaPlayer implements SubtitleController.Listener synchronized(this) { if (DEBUG) Log.d(TAG, "onStopped"); mPaused = true; + mStopped = true; + mSeeking = false; scheduleNotification(NOTIFY_STOP, 0 /* delay */); } } @@ -2910,6 +2913,8 @@ public class MediaPlayer implements SubtitleController.Listener @Override public void onSeekComplete(MediaPlayer mp) { synchronized(this) { + mStopped = false; + mSeeking = true; scheduleNotification(NOTIFY_SEEK, 0 /* delay */); } } @@ -2918,6 +2923,8 @@ public class MediaPlayer implements SubtitleController.Listener public void onNewPlayer() { if (mRefresh) { synchronized(this) { + mStopped = false; + mSeeking = true; scheduleNotification(NOTIFY_SEEK, 0 /* delay */); } } @@ -3143,6 +3150,8 @@ public class MediaPlayer implements SubtitleController.Listener if (mTimeAdjustment > 1000000) { // schedule seeked event if time jumped significantly // TODO: do this properly by introducing an exception + mStopped = false; + mSeeking = true; scheduleNotification(NOTIFY_SEEK, 0 /* delay */); } } else { -- 2.11.0