diff --git a/core/playlists/system.c b/core/playlists/system.c index 37e16d92..3c87e6da 100644 --- a/core/playlists/system.c +++ b/core/playlists/system.c @@ -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()