aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist.c
diff options
context:
space:
mode:
authorRomain Bignon <romain@peerfuse.org>2010-05-31 23:32:11 +0200
committerRomain Bignon <romain@peerfuse.org>2010-05-31 23:36:16 +0200
commit867b93a5b2d9c99f35981e3f4622cb2fc06eff99 (patch)
tree701829cdb56111cad1aa1894e17efdbeac89bab8 /src/playlist.c
parent53647c8ba1d7ce54a5caa0c7d414926bf4deb249 (diff)
downloadmpd-867b93a5b2d9c99f35981e3f4622cb2fc06eff99.tar.gz
mpd-867b93a5b2d9c99f35981e3f4622cb2fc06eff99.tar.xz
mpd-867b93a5b2d9c99f35981e3f4622cb2fc06eff99.zip
single mode: at the end of the song, pause on the next song instead of stop
Diffstat (limited to 'src/playlist.c')
-rw-r--r--src/playlist.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/playlist.c b/src/playlist.c
index e708ce00f..75fd23bf2 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -107,6 +107,12 @@ playlist_sync_with_queue(struct playlist *playlist)
playlist->current = playlist->queued;
playlist->queued = -1;
+ /* Set pause and remove the single mode. */
+ if(playlist->queue.single && !playlist->queue.repeat) {
+ playlist->queue.single = false;
+ pc_set_pause(true);
+ }
+
if(playlist->queue.consume)
playlist_delete(playlist, queue_order_to_position(&playlist->queue, current));
@@ -393,15 +399,10 @@ playlist_get_next_song(const struct playlist *playlist)
{
if (playlist->current >= 0)
{
- if (playlist->queue.single == 1)
- {
- if (playlist->queue.repeat == 1)
- return queue_order_to_position(&playlist->queue,
- playlist->current);
- else
- return -1;
- }
- if (playlist->current + 1 < (int)queue_length(&playlist->queue))
+ if (playlist->queue.single == 1 && playlist->queue.repeat == 1)
+ return queue_order_to_position(&playlist->queue,
+ playlist->current);
+ else if (playlist->current + 1 < (int)queue_length(&playlist->queue))
return queue_order_to_position(&playlist->queue,
playlist->current + 1);
else if (playlist->queue.repeat == 1)