From 710b3275ea09325131ca6f80cbcb98272424123d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 9 Feb 2009 22:47:23 +0100 Subject: queue: update order array after song move Commit f78cddb4 introduced a regression: after a song was moved, the order array was not updated (in random mode). This caused MPD to think the "current" song has changed when you moved something to the position of the current song. --- src/queue.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/queue.c b/src/queue.c index 73adb2f49..fc582ec29 100644 --- a/src/queue.c +++ b/src/queue.c @@ -155,6 +155,20 @@ queue_move(struct queue *queue, unsigned from, unsigned to) queue->idToPosition[item.id] = to; queue->items[to] = item; queue->items[to].version = queue->version; + + /* now deal with order */ + + if (queue->random) { + for (unsigned i = 0; i < queue->length; i++) { + if (queue->order[i] > from && queue->order[i] <= to) + queue->order[i]--; + else if (queue->order[i] < from && + queue->order[i] >= to) + queue->order[i]++; + else if (from == queue->order[i]) + queue->order[i] = to; + } + } } void -- cgit v1.2.3