Merge branch 'v0.20.x'

This commit is contained in:
Max Kellermann
2017-12-03 16:22:08 +01:00
12 changed files with 47 additions and 15 deletions

View File

@@ -359,8 +359,20 @@ Queue::ShuffleOrderFirst(unsigned start, unsigned end) noexcept
}
void
Queue::ShuffleOrderLast(unsigned start, unsigned end) noexcept
Queue::ShuffleOrderLastWithPriority(unsigned start, unsigned end) noexcept
{
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);