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);
|
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
|
#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
|
void
|
||||||
playlist::PlayPosition(PlayerControl &pc, int song)
|
playlist::PlayPosition(PlayerControl &pc, int song)
|
||||||
{
|
{
|
||||||
@ -90,13 +108,7 @@ playlist::PlayPosition(PlayerControl &pc, int song)
|
|||||||
number, because random mode is enabled */
|
number, because random mode is enabled */
|
||||||
i = queue.PositionToOrder(song);
|
i = queue.PositionToOrder(song);
|
||||||
|
|
||||||
if (!playing)
|
i = MoveOrderToCurrent(i);
|
||||||
current = 0;
|
|
||||||
|
|
||||||
/* swap the new song with the previous "current" one,
|
|
||||||
so playback continues as planned */
|
|
||||||
queue.SwapOrders(i, current);
|
|
||||||
i = current;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_on_error = false;
|
stop_on_error = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user