diff --git a/core/playlists/system.c b/core/playlists/system.c index 1aef0bbe..783e057e 100644 --- a/core/playlists/system.c +++ b/core/playlists/system.c @@ -8,7 +8,6 @@ static bool pl_system_add_track(const gchar *, struct track *); static bool pl_system_remove_track(const gchar *, struct track *); static inline struct queue *__sys_pl_queue(enum sys_playlist_t); -static void __sys_pl_save_collection(); static void __sys_pl_save(); static struct file sys_file = FILE_INIT("playlist.db", 0, 0); @@ -79,6 +78,24 @@ static bool sys_pl_hidden_remove(struct playlist *playlist, struct track *track) /* * Collection playlist operations. */ +static void sys_pl_collection_save(struct playlist *playlist) +{ + if (file_open(&sys_collection, OPEN_WRITE)) { + queue_save_flags(&playlist->pl_queue, &sys_collection); + file_close(&sys_collection); + } +} + +static void sys_pl_collection_load(struct playlist *playlist) +{ + if (file_open(&sys_collection, OPEN_READ)) { + queue_load_flags(&playlist->pl_queue, &sys_collection); + queue_unset_flag(&playlist->pl_queue, Q_SAVE_FLAGS); + queue_unset_flag(&playlist->pl_queue, Q_SAVE_SORT); + file_close(&sys_collection); + } +} + static bool sys_pl_collection_add(struct playlist *playlist, struct track *track) { if (track->tr_library->li_enabled != true) @@ -98,14 +115,14 @@ static void sys_pl_collection_set_flag(struct playlist *playlist, enum queue_flags flag, bool enabled) { playlist_generic_set_flag(playlist, flag, enabled); - __sys_pl_save_collection(); + sys_pl_collection_save(playlist); } static void sys_pl_collection_sort(struct playlist *playlist, enum compare_t sort, bool reset) { playlist_generic_sort(playlist, sort, reset); - __sys_pl_save_collection(); + sys_pl_collection_save(playlist); } @@ -297,15 +314,6 @@ static void __sys_pl_save() file_close(&sys_file); } -static void __sys_pl_save_collection() -{ - if (!file_open(&sys_collection, OPEN_WRITE)) - return; - - queue_save_flags(__sys_pl_queue(SYS_PL_COLLECTION), &sys_collection); - file_close(&sys_collection); -} - static void __sys_pl_load_playlists() { enum sys_playlist_t plist; @@ -329,21 +337,10 @@ static void __sys_pl_load_playlists() return; } -static void __sys_pl_load_collection() -{ - if (!file_open(&sys_collection, OPEN_READ)) - return; - - queue_load_flags(__sys_pl_queue(SYS_PL_COLLECTION), &sys_collection); - queue_unset_flag(__sys_pl_queue(SYS_PL_COLLECTION), Q_SAVE_FLAGS); - queue_unset_flag(__sys_pl_queue(SYS_PL_COLLECTION), Q_SAVE_SORT); - file_close(&sys_collection); -} - static bool __sys_pl_load() { __sys_pl_load_playlists(); - __sys_pl_load_collection(); + sys_pl_collection_load(&__sys_pl_lookup("Collection")->spl_playlist); return true; }