diff options
Diffstat (limited to 'apps/playlist_viewer.c')
-rw-r--r-- | apps/playlist_viewer.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c index 90a47c35ea..4c57d1a5ce 100644 --- a/apps/playlist_viewer.c +++ b/apps/playlist_viewer.c | |||
@@ -143,7 +143,7 @@ static void format_line(const struct playlist_entry* track, char* str, | |||
143 | static bool update_playlist(bool force); | 143 | static bool update_playlist(bool force); |
144 | static enum pv_onplay_result onplay_menu(int index); | 144 | static enum pv_onplay_result onplay_menu(int index); |
145 | 145 | ||
146 | static void close_playlist_viewer(void); | 146 | static void close_playlist_viewer(bool pop_activity); |
147 | 147 | ||
148 | static void playlist_buffer_init(struct playlist_buffer *pb, char *names_buffer, | 148 | static void playlist_buffer_init(struct playlist_buffer *pb, char *names_buffer, |
149 | int names_buffer_size) | 149 | int names_buffer_size) |
@@ -525,11 +525,12 @@ static enum pv_onplay_result show_track_info(const struct playlist_entry *curren | |||
525 | static enum pv_onplay_result open_with(const struct playlist_entry *current_track) | 525 | static enum pv_onplay_result open_with(const struct playlist_entry *current_track) |
526 | { | 526 | { |
527 | char selected_track[MAX_PATH]; | 527 | char selected_track[MAX_PATH]; |
528 | close_playlist_viewer(); | 528 | close_playlist_viewer(false); /* don't pop activity yet – relevant for plugin_load */ |
529 | 529 | ||
530 | strmemccpy(selected_track, current_track->name, sizeof(selected_track)); | 530 | strmemccpy(selected_track, current_track->name, sizeof(selected_track)); |
531 | 531 | ||
532 | int plugin_return = filetype_list_viewers(selected_track); | 532 | int plugin_return = filetype_list_viewers(selected_track); |
533 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
533 | 534 | ||
534 | switch (plugin_return) | 535 | switch (plugin_return) |
535 | { | 536 | { |
@@ -547,11 +548,11 @@ static enum pv_onplay_result open_with(const struct playlist_entry *current_trac | |||
547 | static enum pv_onplay_result open_pictureflow(const struct playlist_entry *current_track) | 548 | static enum pv_onplay_result open_pictureflow(const struct playlist_entry *current_track) |
548 | { | 549 | { |
549 | char selected_track[MAX_PATH]; | 550 | char selected_track[MAX_PATH]; |
550 | close_playlist_viewer(); | 551 | close_playlist_viewer(false); /* don't pop activity yet – relevant for plugin_load */ |
551 | 552 | ||
552 | strmemccpy(selected_track, current_track->name, sizeof(selected_track)); | 553 | strmemccpy(selected_track, current_track->name, sizeof(selected_track)); |
553 | |||
554 | int plugin_return = filetype_load_plugin((void *)"pictureflow", selected_track); | 554 | int plugin_return = filetype_load_plugin((void *)"pictureflow", selected_track); |
555 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
555 | 556 | ||
556 | switch (plugin_return) | 557 | switch (plugin_return) |
557 | { | 558 | { |
@@ -1092,14 +1093,15 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename, | |||
1092 | } | 1093 | } |
1093 | 1094 | ||
1094 | exit: | 1095 | exit: |
1095 | close_playlist_viewer(); | 1096 | close_playlist_viewer(true); |
1096 | return ret; | 1097 | return ret; |
1097 | } | 1098 | } |
1098 | 1099 | ||
1099 | static void close_playlist_viewer(void) | 1100 | static void close_playlist_viewer(bool pop_activity) |
1100 | { | 1101 | { |
1101 | talk_shutup(); | 1102 | talk_shutup(); |
1102 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | 1103 | if (pop_activity) |
1104 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
1103 | if (viewer.playlist) | 1105 | if (viewer.playlist) |
1104 | { | 1106 | { |
1105 | if (viewer.initial_selection) | 1107 | if (viewer.initial_selection) |