From 2ec7748acdb1c5cc0fbc6cdbdc64985060a96830 Mon Sep 17 00:00:00 2001 From: Andrzej Rybczak Date: Mon, 16 Feb 2009 15:25:23 +0100 Subject: [PATCH] improve 'Crop' function deleting by songid seems to be very slow in current mpd-git so use positions instead. --- src/ncmpcpp.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/ncmpcpp.cpp b/src/ncmpcpp.cpp index afea6cf0..9b6604b3 100644 --- a/src/ncmpcpp.cpp +++ b/src/ncmpcpp.cpp @@ -1402,10 +1402,10 @@ int main(int argc, char *argv[]) { if (myPlaylist->Main()->hasSelected()) { - for (size_t i = 0; i < myPlaylist->Main()->Size(); i++) + for (int i = myPlaylist->Main()->Size()-1; i >= 0; i--) { - if (!myPlaylist->Main()->isSelected(i) && i != size_t(myPlaylist->NowPlaying)) - Mpd->QueueDeleteSongId(myPlaylist->Main()->at(i).GetID()); + if (!myPlaylist->Main()->isSelected(i) && i != myPlaylist->NowPlaying) + Mpd->QueueDeleteSong(i); } // if mpd deletes now playing song deletion will be sluggishly slow // then so we have to assure it will be deleted at the very end. @@ -1423,10 +1423,9 @@ int main(int argc, char *argv[]) ShowMessage("Nothing is playing now!"); continue; } - for (int i = 0; i < myPlaylist->NowPlaying; i++) - Mpd->QueueDeleteSongId(myPlaylist->Main()->at(i).GetID()); - for (size_t i = myPlaylist->NowPlaying+1; i < myPlaylist->Main()->Size(); i++) - Mpd->QueueDeleteSongId(myPlaylist->Main()->at(i).GetID()); + for (int i = myPlaylist->Main()->Size()-1; i >= 0; i--) + if (i != myPlaylist->NowPlaying) + Mpd->QueueDeleteSong(i); ShowMessage("Deleting all items except now playing one..."); Mpd->CommitQueue(); ShowMessage("Items deleted!");