From cf62a8ebc42d6cbc0b243aec48ab33c973f99c2a Mon Sep 17 00:00:00 2001 From: Christopher Eby Date: Sun, 28 Feb 2010 18:54:58 -0600 Subject: [PATCH] Avoid calling getDuration/getPosition when MediaPlayer doesn't want us to --- src/org/kreed/vanilla/PlaybackService.java | 26 +++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/org/kreed/vanilla/PlaybackService.java b/src/org/kreed/vanilla/PlaybackService.java index bba8c2ff..793b63ac 100644 --- a/src/org/kreed/vanilla/PlaybackService.java +++ b/src/org/kreed/vanilla/PlaybackService.java @@ -89,14 +89,18 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On { if (mMediaPlayer == null) return 0; - return mMediaPlayer.getCurrentPosition(); + synchronized (mMediaPlayer) { + return mMediaPlayer.getCurrentPosition(); + } } public int getDuration() { if (mMediaPlayer == null) return 0; - return mMediaPlayer.getDuration(); + synchronized (mMediaPlayer) { + return mMediaPlayer.getDuration(); + } } public void nextSong() @@ -130,10 +134,14 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On public void seekToProgress(int progress) { - if (mMediaPlayer == null || !mMediaPlayer.isPlaying()) + if (mMediaPlayer == null) return; - long position = (long)mMediaPlayer.getDuration() * progress / 1000; - mMediaPlayer.seekTo((int)position); + synchronized (mMediaPlayer) { + if (!mMediaPlayer.isPlaying()) + return; + long position = (long)mMediaPlayer.getDuration() * progress / 1000; + mMediaPlayer.seekTo((int)position); + } } }; @@ -547,9 +555,11 @@ public class PlaybackService extends Service implements Runnable, MediaPlayer.On } try { - mMediaPlayer.reset(); - mMediaPlayer.setDataSource(song.path); - mMediaPlayer.prepare(); + synchronized (mMediaPlayer) { + mMediaPlayer.reset(); + mMediaPlayer.setDataSource(song.path); + mMediaPlayer.prepare(); + } if (mState == STATE_PLAYING) play(); } catch (IOException e) {