From a8a85143f6e0b0fdc2467722d057a4b8526f7e69 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 11 Jul 2014 20:22:22 +0200 Subject: QueueCommands: make "result" more local --- src/command/QueueCommands.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/command/QueueCommands.cxx') diff --git a/src/command/QueueCommands.cxx b/src/command/QueueCommands.cxx index a21eb75f0..a20b24132 100644 --- a/src/command/QueueCommands.cxx +++ b/src/command/QueueCommands.cxx @@ -43,7 +43,6 @@ CommandResult handle_add(Client &client, gcc_unused int argc, char *argv[]) { char *uri = argv[1]; - PlaylistResult result; if (memcmp(uri, "file:///", 8) == 0) { const char *path_utf8 = uri + 7; @@ -59,7 +58,7 @@ handle_add(Client &client, gcc_unused int argc, char *argv[]) if (!client_allow_file(client, path_fs, error)) return print_error(client, error); - result = client.partition.AppendFile(path_utf8); + auto result = client.partition.AppendFile(path_utf8); return print_playlist_result(client, result); } @@ -70,7 +69,7 @@ handle_add(Client &client, gcc_unused int argc, char *argv[]) return CommandResult::ERROR; } - result = client.partition.AppendURI(uri); + auto result = client.partition.AppendURI(uri); return print_playlist_result(client, result); } -- cgit v1.2.3 From 11a5ee821b99da7c58da4cb2251c8686e2d615cf Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 11 Jul 2014 20:01:53 +0200 Subject: 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. --- src/command/QueueCommands.cxx | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/command/QueueCommands.cxx') diff --git a/src/command/QueueCommands.cxx b/src/command/QueueCommands.cxx index a20b24132..a987e1bc9 100644 --- a/src/command/QueueCommands.cxx +++ b/src/command/QueueCommands.cxx @@ -28,6 +28,7 @@ #include "ClientFile.hxx" #include "Client.hxx" #include "Partition.hxx" +#include "BulkEdit.hxx" #include "protocol/ArgParser.hxx" #include "protocol/Result.hxx" #include "ls.hxx" @@ -73,6 +74,8 @@ handle_add(Client &client, gcc_unused int argc, char *argv[]) return print_playlist_result(client, result); } + const ScopeBulkEdit bulk_edit(client.partition); + const DatabaseSelection selection(uri, true); Error error; return AddFromDatabase(client.partition, selection, error) -- cgit v1.2.3