diff --git a/src/org/kreed/vanilla/PlaybackActivity.java b/src/org/kreed/vanilla/PlaybackActivity.java index 62a5477c..c2a060e9 100644 --- a/src/org/kreed/vanilla/PlaybackActivity.java +++ b/src/org/kreed/vanilla/PlaybackActivity.java @@ -310,6 +310,8 @@ public class PlaybackActivity extends Activity implements Handler.Callback, View menu.findItem(MENU_SHUFFLE).setTitle(isShuffling ? R.string.shuffle_disable : R.string.shuffle_enable); boolean isRepeating = (mState & PlaybackService.FLAG_REPEAT) != 0; menu.findItem(MENU_REPEAT).setTitle(isRepeating ? R.string.repeat_disable : R.string.repeat_enable); + if ((mState & PlaybackService.FLAG_NO_MEDIA) != 0) + menu.findItem(MENU_REPEAT).setEnabled(false); return true; } diff --git a/src/org/kreed/vanilla/PlaybackService.java b/src/org/kreed/vanilla/PlaybackService.java index ffa526e1..6de42ca4 100644 --- a/src/org/kreed/vanilla/PlaybackService.java +++ b/src/org/kreed/vanilla/PlaybackService.java @@ -431,9 +431,6 @@ public final class PlaybackService extends Service implements Handler.Callback, Toast.makeText(this, text, Toast.LENGTH_LONG).show(); } - if (mCurrentSong == null) - state &= ~FLAG_REPEAT; - int oldState = mState; mState = state; diff --git a/src/org/kreed/vanilla/SongTimeline.java b/src/org/kreed/vanilla/SongTimeline.java index 8b3c422b..ed2be734 100644 --- a/src/org/kreed/vanilla/SongTimeline.java +++ b/src/org/kreed/vanilla/SongTimeline.java @@ -238,10 +238,13 @@ public final class SongTimeline { synchronized (this) { if (repeat) { + Song song = getSong(0); + if (song == null) + return; mRepeatStart = mCurrentPos; // Ensure that we will at least repeat one song (the current song), // even if all of our songs were selected randomly. - getSong(0).flags &= ~Song.FLAG_RANDOM; + song.flags &= ~Song.FLAG_RANDOM; } else { mRepeatStart = -1; mRepeatedSongs = null;