aboutsummaryrefslogtreecommitdiffstats
path: root/src/Playlist.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-07-11 20:01:53 +0200
committerMax Kellermann <max@duempel.org>2014-07-11 20:22:35 +0200
commit11a5ee821b99da7c58da4cb2251c8686e2d615cf (patch)
tree12247daf432ae0e4de0594a9432b341b015d4a42 /src/Playlist.cxx
parenta8a85143f6e0b0fdc2467722d057a4b8526f7e69 (diff)
downloadmpd-11a5ee821b99da7c58da4cb2251c8686e2d615cf.tar.gz
mpd-11a5ee821b99da7c58da4cb2251c8686e2d615cf.tar.xz
mpd-11a5ee821b99da7c58da4cb2251c8686e2d615cf.zip
PlaylistEdit: postpone UpdateQueuedSong() when adding multiple songs
Implement a "bulk" edit mode that postpones both UpdateQueuedSong() and OnModified(). This way, the playlist version gets incremented only once. More importantly: when adding multiple songs to a queue that consists of only one song, the first song that got added will always be played next. By postponing this choice, all newly added songs get a chance to become the next song. Fixes the second (and last) part of Mantis ticket 0004005.
Diffstat (limited to '')
-rw-r--r--src/Playlist.cxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/Playlist.cxx b/src/Playlist.cxx
index ac2cc494b..526f35298 100644
--- a/src/Playlist.cxx
+++ b/src/Playlist.cxx
@@ -103,6 +103,12 @@ playlist::UpdateQueuedSong(PlayerControl &pc, const Song *prev)
if (!playing)
return;
+ if (prev == nullptr && bulk_edit)
+ /* postponed until CommitBulk() to avoid always
+ queueing the first song that is being added (in
+ random mode) */
+ return;
+
assert(!queue.IsEmpty());
assert((queued < 0) == (prev == nullptr));