Queue: "setprio" re-enqueues old song if priority has been raised
This commit changes a minor queue priority design to something which makes a little bit more sense. Previously, a song that had already been played would only be re-enqueued if its priority had just been raised above the current song's. This means that if it was already above, it was not re-enqueued. That is a surprising behavior, because users expect a song to be played when its priority is raised. Now the song is always re-enqueued if its priority is raised (and above the current song's - no matter if it has already been above before). https://bugs.musicpd.org/view.php?id=4592
This commit is contained in:
parent
e3237f057d
commit
e7353ec7e7
2
NEWS
2
NEWS
|
@ -1,4 +1,6 @@
|
|||
ver 0.19.20 (not yet released)
|
||||
* protocol
|
||||
- "setprio" re-enqueues old song if priority has been raised
|
||||
* decoder
|
||||
- ffmpeg: ignore empty packets
|
||||
- pcm: fix corruption bug with partial frames (after short read)
|
||||
|
|
|
@ -426,14 +426,15 @@ Queue::SetPriority(unsigned position, uint8_t priority, int after_order)
|
|||
|
||||
if (_order < (unsigned)after_order) {
|
||||
/* the specified song has been played already
|
||||
- enqueue it only if its priority has just
|
||||
become bigger than the current one's */
|
||||
- enqueue it only if its priority has been
|
||||
increased and is now bigger than the
|
||||
current one's */
|
||||
|
||||
const unsigned after_position =
|
||||
OrderToPosition(after_order);
|
||||
const Item *after_item =
|
||||
&items[after_position];
|
||||
if (old_priority > after_item->priority ||
|
||||
if (priority <= old_priority ||
|
||||
priority <= after_item->priority)
|
||||
/* priority hasn't become bigger */
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue