core/playlists/system: Trigger an update during playlist init

This is a bit cleaner, and helps to simplify the system playlist
initialization process.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2016-07-24 12:11:01 -04:00
parent f4b12c5a83
commit 81aea3017e
1 changed files with 13 additions and 10 deletions

View File

@ -7,6 +7,7 @@
static bool pl_system_add_track(const gchar *, struct track *);
static bool pl_system_remove_track(const gchar *, struct track *);
static void pl_system_update(const gchar *);
static inline struct queue *__sys_pl_queue(enum sys_playlist_t);
static void __sys_pl_save();
@ -24,6 +25,13 @@ static void sys_pl_generic_init(struct playlist *playlist, unsigned int flags,
playlist_generic_init(playlist, Q_REPEAT | Q_ADD_FRONT, ops);
}
static void sys_pl_update_init(struct playlist *playlist, unsigned int flags,
struct queue_ops *ops)
{
sys_pl_generic_init(playlist, flags, ops);
pl_system_update(playlist->pl_name);
}
static bool sys_pl_generic_add(struct playlist *playlist, struct track *track)
{
if (queue_has(__sys_pl_queue(SYS_PL_HIDDEN), track))
@ -146,7 +154,7 @@ static void sys_pl_collection_sort(struct playlist *playlist,
static struct sys_playlist sys_collection = {
.spl_playlist = DEFINE_PLAYLIST(PL_SYSTEM, "Collection"),
.spl_init = sys_pl_generic_init,
.spl_init = sys_pl_update_init,
.spl_add = sys_pl_collection_add,
.spl_remove = playlist_generic_remove_track,
.spl_update = sys_pl_collection_update,
@ -203,7 +211,7 @@ static bool sys_pl_unplayed_update(struct playlist *playlist,
static struct sys_playlist sys_unplayed = {
.spl_playlist = DEFINE_PLAYLIST(PL_SYSTEM, "Unplayed"),
.spl_init = sys_pl_generic_init,
.spl_init = sys_pl_update_init,
.spl_add = sys_pl_unplayed_add,
.spl_remove = playlist_generic_remove_track,
.spl_update = sys_pl_unplayed_update,
@ -234,7 +242,7 @@ static bool sys_pl_most_played_update(struct playlist *playlist,
static struct sys_playlist sys_most_played = {
.spl_playlist = DEFINE_PLAYLIST(PL_SYSTEM, "Most Played"),
.spl_init = sys_pl_generic_init,
.spl_init = sys_pl_update_init,
.spl_add = sys_pl_most_played_add,
.spl_remove = playlist_generic_remove_track,
.spl_update = sys_pl_most_played_update,
@ -265,7 +273,7 @@ static bool sys_pl_least_played_update(struct playlist *playlist,
static struct sys_playlist sys_least_played = {
.spl_playlist = DEFINE_PLAYLIST(PL_SYSTEM, "Least Played"),
.spl_init = sys_pl_generic_init,
.spl_init = sys_pl_update_init,
.spl_add = sys_pl_least_played_add,
.spl_remove = playlist_generic_remove_track,
.spl_update = sys_pl_least_played_update,
@ -417,16 +425,11 @@ void pl_system_init(struct queue_ops *ops)
struct sys_playlist *sys_pl;
unsigned int i;
idle_schedule(IDLE_SYNC, __sys_pl_load, NULL);
for (i = 0; i < SYS_PL_NUM_PLAYLISTS; i++) {
sys_pl = sys_playlists[i];
sys_pl->spl_init(&sys_pl->spl_playlist, 0, ops);
}
idle_schedule(IDLE_SYNC, __sys_pl_load, NULL);
pl_system_update("Collection");
pl_system_update("Unplayed");
pl_system_update("Most Played");
pl_system_update("Least Played");
}
void pl_system_deinit()