queue/PlaylistEdit: shuffle appended songs only within its priority group

Fixes #165.
This commit is contained in:
Max Kellermann
2017-12-02 17:08:20 +01:00
parent 4a3059f509
commit 478180ebe4
4 changed files with 20 additions and 6 deletions

View File

@@ -364,8 +364,20 @@ Queue::ShuffleOrderFirst(unsigned start, unsigned end)
}
void
Queue::ShuffleOrderLast(unsigned start, unsigned end)
Queue::ShuffleOrderLastWithPriority(unsigned start, unsigned end)
{
assert(end <= length);
assert(start < end);
/* skip all items at the start which have a higher priority,
because the last item shall only be shuffled within its
priority group */
const auto last_priority = items[OrderToPosition(end - 1)].priority;
while (items[OrderToPosition(start)].priority != last_priority) {
++start;
assert(start < end);
}
rand.AutoCreate();
std::uniform_int_distribution<unsigned> distribution(start, end - 1);