Playlist: move more functions into the class
This commit is contained in:
parent
921d01b59d
commit
ac8c1d0a01
@ -44,21 +44,18 @@ playlist::TagModified(DetachedSong &&song)
|
||||
idle_add(IDLE_PLAYLIST);
|
||||
}
|
||||
|
||||
/**
|
||||
* Queue a song, addressed by its order number.
|
||||
*/
|
||||
static void
|
||||
playlist_queue_song_order(playlist &playlist, PlayerControl &pc,
|
||||
unsigned order)
|
||||
inline void
|
||||
playlist::QueueSongOrder(PlayerControl &pc, unsigned order)
|
||||
|
||||
{
|
||||
assert(playlist.queue.IsValidOrder(order));
|
||||
assert(queue.IsValidOrder(order));
|
||||
|
||||
playlist.queued = order;
|
||||
queued = order;
|
||||
|
||||
const DetachedSong &song = playlist.queue.GetOrder(order);
|
||||
const DetachedSong &song = queue.GetOrder(order);
|
||||
|
||||
FormatDebug(playlist_domain, "queue song %i:\"%s\"",
|
||||
playlist.queued, song.GetURI());
|
||||
queued, song.GetURI());
|
||||
|
||||
pc.EnqueueSong(new DetachedSong(song));
|
||||
}
|
||||
@ -137,7 +134,7 @@ playlist::UpdateQueuedSong(PlayerControl &pc, const DetachedSong *prev)
|
||||
|
||||
if (next_order >= 0) {
|
||||
if (next_song != prev)
|
||||
playlist_queue_song_order(*this, pc, next_order);
|
||||
QueueSongOrder(pc, next_order);
|
||||
else
|
||||
queued = next_order;
|
||||
}
|
||||
@ -157,9 +154,6 @@ playlist::PlayOrder(PlayerControl &pc, int order)
|
||||
current = order;
|
||||
}
|
||||
|
||||
static void
|
||||
playlist_resume_playback(playlist &playlist, PlayerControl &pc);
|
||||
|
||||
void
|
||||
playlist::SyncWithPlayer(PlayerControl &pc)
|
||||
{
|
||||
@ -178,7 +172,7 @@ playlist::SyncWithPlayer(PlayerControl &pc)
|
||||
should be restarted with the next song. That can
|
||||
happen if the playlist isn't filling the queue fast
|
||||
enough */
|
||||
playlist_resume_playback(*this, pc);
|
||||
ResumePlayback(pc);
|
||||
else {
|
||||
/* check if the player thread has already started
|
||||
playing the queued song */
|
||||
@ -196,31 +190,27 @@ playlist::SyncWithPlayer(PlayerControl &pc)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The player has stopped for some reason. Check the error, and
|
||||
* decide whether to re-start playback
|
||||
*/
|
||||
static void
|
||||
playlist_resume_playback(playlist &playlist, PlayerControl &pc)
|
||||
inline void
|
||||
playlist::ResumePlayback(PlayerControl &pc)
|
||||
{
|
||||
assert(playlist.playing);
|
||||
assert(playing);
|
||||
assert(pc.GetState() == PlayerState::STOP);
|
||||
|
||||
const auto error = pc.GetErrorType();
|
||||
if (error == PlayerError::NONE)
|
||||
playlist.error_count = 0;
|
||||
error_count = 0;
|
||||
else
|
||||
++playlist.error_count;
|
||||
++error_count;
|
||||
|
||||
if ((playlist.stop_on_error && error != PlayerError::NONE) ||
|
||||
if ((stop_on_error && error != PlayerError::NONE) ||
|
||||
error == PlayerError::OUTPUT ||
|
||||
playlist.error_count >= playlist.queue.GetLength())
|
||||
error_count >= queue.GetLength())
|
||||
/* too many errors, or critical error: stop
|
||||
playback */
|
||||
playlist.Stop(pc);
|
||||
Stop(pc);
|
||||
else
|
||||
/* continue playback at the next song */
|
||||
playlist.PlayNext(pc);
|
||||
PlayNext(pc);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -145,12 +145,23 @@ protected:
|
||||
*/
|
||||
void UpdateQueuedSong(PlayerControl &pc, const DetachedSong *prev);
|
||||
|
||||
/**
|
||||
* Queue a song, addressed by its order number.
|
||||
*/
|
||||
void QueueSongOrder(PlayerControl &pc, unsigned order);
|
||||
|
||||
/**
|
||||
* Called when the player thread has started playing the
|
||||
* "queued" song.
|
||||
*/
|
||||
void QueuedSongStarted(PlayerControl &pc);
|
||||
|
||||
/**
|
||||
* The player has stopped for some reason. Check the error,
|
||||
* and decide whether to re-start playback.
|
||||
*/
|
||||
void ResumePlayback(PlayerControl &pc);
|
||||
|
||||
public:
|
||||
void BeginBulk();
|
||||
void CommitBulk(PlayerControl &pc);
|
||||
|
Loading…
Reference in New Issue
Block a user