diff --git a/include/playqueue.h b/include/playqueue.h index 8f30d5cf..779a238a 100644 --- a/include/playqueue.h +++ b/include/playqueue.h @@ -13,7 +13,8 @@ enum playqueue_flags { PQ_ENABLED = (1 << 0), PQ_RANDOM = (1 << 1), PQ_REPEAT = (1 << 2), - PQ_DISABLE_CHANGED_SIZE = (1 << 3), + PQ_NEVER_SORT = (1 << 3), + PQ_DISABLE_CHANGED_SIZE = (1 << 31), }; enum sort_t { diff --git a/lib/audio.cpp b/lib/audio.cpp index d47cb887..ac81c5c5 100644 --- a/lib/audio.cpp +++ b/lib/audio.cpp @@ -103,6 +103,7 @@ void audio :: init(int *argc, char ***argv) GstBus *bus; o_recently_played.set_flag(PQ_REPEAT); + o_recently_played.set_flag(PQ_NEVER_SORT); o_recently_played.set_flag(PQ_DISABLE_CHANGED_SIZE); gst_init(argc, argv); diff --git a/lib/playqueue.cpp b/lib/playqueue.cpp index 822017f7..dc8d1f1c 100644 --- a/lib/playqueue.cpp +++ b/lib/playqueue.cpp @@ -283,6 +283,9 @@ void Playqueue :: _add_sort(sort_t field) void Playqueue :: add_sort(sort_t field) { + if (flags & PQ_NEVER_SORT) + return; + _add_sort(field); std::stable_sort(tracks.begin(), tracks.end(), SortTracks(sort_order)); @@ -293,6 +296,8 @@ void Playqueue :: add_sort(sort_t field) void Playqueue :: reset_sort(sort_t field) { + if (flags & PQ_NEVER_SORT) + return; sort_order.clear(); add_sort(field); }