queue/Playlist: move code to MoveOrderToCurrent()
This commit is contained in:
parent
f2fac77d8c
commit
0f79287b04
@ -356,6 +356,18 @@ public:
|
||||
}
|
||||
|
||||
void SetConsume(bool new_value);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Prepare a manual song change: move the given song to the
|
||||
* current playback order. This is done to avoid skipping
|
||||
* upcoming songs in the order list. The newly selected song
|
||||
* shall be inserted in the order list, and the rest shall be
|
||||
* played after that as previously planned.
|
||||
*
|
||||
* @return the new order number of the given song
|
||||
*/
|
||||
unsigned MoveOrderToCurrent(unsigned old_order);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -56,6 +56,24 @@ playlist::Stop(PlayerControl &pc)
|
||||
}
|
||||
}
|
||||
|
||||
unsigned
|
||||
playlist::MoveOrderToCurrent(unsigned old_order)
|
||||
{
|
||||
if (!queue.random)
|
||||
/* no-op because there is no order list */
|
||||
return old_order;
|
||||
|
||||
const unsigned destination_order = playing
|
||||
? (unsigned)current
|
||||
: 0;
|
||||
|
||||
/* swap the new song with the previous "current" one, so
|
||||
playback continues as planned */
|
||||
queue.SwapOrders(old_order, destination_order);
|
||||
|
||||
return destination_order;
|
||||
}
|
||||
|
||||
void
|
||||
playlist::PlayPosition(PlayerControl &pc, int song)
|
||||
{
|
||||
@ -90,13 +108,7 @@ playlist::PlayPosition(PlayerControl &pc, int song)
|
||||
number, because random mode is enabled */
|
||||
i = queue.PositionToOrder(song);
|
||||
|
||||
if (!playing)
|
||||
current = 0;
|
||||
|
||||
/* swap the new song with the previous "current" one,
|
||||
so playback continues as planned */
|
||||
queue.SwapOrders(i, current);
|
||||
i = current;
|
||||
i = MoveOrderToCurrent(i);
|
||||
}
|
||||
|
||||
stop_on_error = false;
|
||||
|
Loading…
Reference in New Issue
Block a user