diff options
Diffstat (limited to 'apps/playlist_viewer.c')
-rw-r--r-- | apps/playlist_viewer.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c index d12aa26de4..d780bfb7e9 100644 --- a/apps/playlist_viewer.c +++ b/apps/playlist_viewer.c @@ -121,8 +121,6 @@ static struct playlist_viewer viewer; static struct playlist_info temp_playlist; static bool temp_playlist_init = false; -static bool dirty = false; - static void playlist_buffer_init(struct playlist_buffer *pb, char *names_buffer, int names_buffer_size); static void playlist_buffer_load_entries(struct playlist_buffer * pb, int index, @@ -661,8 +659,14 @@ static enum pv_onplay_result onplay_menu(int index) break; case 6: /* save playlist */ - if (!save_playlist_screen(viewer.playlist)) - dirty = false; + if (!save_playlist_screen(viewer.playlist) && viewer.playlist) + /* + * Set unmodified unless it's the current playlist, which may + * contain queued songs that aren't saved to the playlist file + * TODO: This can be removed once g5192 is merged, + * "playlist: Rewrite playlist_save(), optimization & fixes" + */ + playlist_set_modified(viewer.playlist, false); ret = PV_ONPLAY_UNCHANGED; break; case 7: @@ -802,8 +806,7 @@ static bool update_viewer_with_changes(struct gui_synclist *playlist_lists, enum if (res == PV_ONPLAY_CHANGED || res == PV_ONPLAY_ITEM_REMOVED) { - if (!viewer.playlist) - playlist_set_modified(NULL, true); + playlist_set_modified(viewer.playlist, true); if (res == PV_ONPLAY_ITEM_REMOVED) gui_synclist_del_item(playlist_lists); @@ -815,8 +818,6 @@ static bool update_viewer_with_changes(struct gui_synclist *playlist_lists, enum if (viewer.selected_track >= viewer.num_tracks) viewer.selected_track = viewer.num_tracks-1; - - dirty = true; } /* the show_icons option in the playlist viewer settings @@ -956,13 +957,11 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename, str(LANG_FAILED)); } - if (!viewer.playlist) - playlist_set_modified(NULL, true); + playlist_set_modified(viewer.playlist, true); update_playlist(true); viewer.moving_track = -1; viewer.moving_playlist_index = -1; - dirty = true; } else if (!viewer.playlist) { @@ -1128,11 +1127,10 @@ static void close_playlist_viewer(void) if (viewer.initial_selection) *(viewer.initial_selection) = viewer.selected_track; - if(dirty && yesno_pop(ID2P(LANG_SAVE_CHANGES))) + if(playlist_modified(viewer.playlist) && yesno_pop(ID2P(LANG_SAVE_CHANGES))) save_playlist_screen(viewer.playlist); playlist_close(viewer.playlist); } - dirty = false; } static const char* playlist_search_callback_name(int selected_item, void * data, |