diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/bookmark.c | 4 | ||||
-rw-r--r-- | apps/gui/option_select.c | 2 | ||||
-rw-r--r-- | apps/gui/quickscreen.c | 7 | ||||
-rw-r--r-- | apps/gui/usb_screen.c | 2 | ||||
-rw-r--r-- | apps/menus/playlist_menu.c | 2 | ||||
-rw-r--r-- | apps/menus/time_menu.c | 2 | ||||
-rw-r--r-- | apps/misc.c | 5 | ||||
-rw-r--r-- | apps/misc.h | 8 | ||||
-rw-r--r-- | apps/onplay.c | 33 | ||||
-rw-r--r-- | apps/playlist_viewer.c | 11 | ||||
-rw-r--r-- | apps/plugin.c | 2 | ||||
-rw-r--r-- | apps/plugins/pitch_screen.c | 2 | ||||
-rw-r--r-- | apps/radio/radio.c | 2 | ||||
-rw-r--r-- | apps/recorder/recording.c | 2 | ||||
-rw-r--r-- | apps/root_menu.c | 49 | ||||
-rw-r--r-- | apps/screens.c | 2 | ||||
-rw-r--r-- | apps/shortcuts.c | 5 | ||||
-rw-r--r-- | apps/tree.c | 11 |
18 files changed, 119 insertions, 32 deletions
diff --git a/apps/bookmark.c b/apps/bookmark.c index 68c10b36e7..64a4b9f761 100644 --- a/apps/bookmark.c +++ b/apps/bookmark.c | |||
@@ -1122,7 +1122,7 @@ int bookmark_load_menu(void) | |||
1122 | } | 1122 | } |
1123 | } | 1123 | } |
1124 | 1124 | ||
1125 | pop_current_activity(); | 1125 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
1126 | return ret; | 1126 | return ret; |
1127 | } | 1127 | } |
1128 | 1128 | ||
@@ -1143,7 +1143,7 @@ bool bookmark_mrb_load() | |||
1143 | ret = play_bookmark(bookmark); | 1143 | ret = play_bookmark(bookmark); |
1144 | } | 1144 | } |
1145 | 1145 | ||
1146 | pop_current_activity(); | 1146 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
1147 | return ret; | 1147 | return ret; |
1148 | } | 1148 | } |
1149 | 1149 | ||
diff --git a/apps/gui/option_select.c b/apps/gui/option_select.c index ca16b5b05f..918335d6cd 100644 --- a/apps/gui/option_select.c +++ b/apps/gui/option_select.c | |||
@@ -574,7 +574,7 @@ bool option_screen(const struct settings_list *setting, | |||
574 | if (function == sound_get_fn(SOUND_VOLUME)) | 574 | if (function == sound_get_fn(SOUND_VOLUME)) |
575 | global_status.last_volume_change = current_tick; | 575 | global_status.last_volume_change = current_tick; |
576 | } | 576 | } |
577 | pop_current_activity(); | 577 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
578 | return false; | 578 | return false; |
579 | } | 579 | } |
580 | 580 | ||
diff --git a/apps/gui/quickscreen.c b/apps/gui/quickscreen.c index 141eb1a16b..1f32dca544 100644 --- a/apps/gui/quickscreen.c +++ b/apps/gui/quickscreen.c | |||
@@ -406,10 +406,13 @@ static int gui_syncquickscreen_run(struct gui_quickscreen * qs, int button_enter | |||
406 | { /* stop scrolling before exiting */ | 406 | { /* stop scrolling before exiting */ |
407 | for (int j = 0; j < QUICKSCREEN_ITEM_COUNT; j++) | 407 | for (int j = 0; j < QUICKSCREEN_ITEM_COUNT; j++) |
408 | screens[i].scroll_stop_viewport(&vps[i][j]); | 408 | screens[i].scroll_stop_viewport(&vps[i][j]); |
409 | viewportmanager_theme_undo(i, true); | 409 | viewportmanager_theme_undo(i, !(ret & QUICKSCREEN_GOTO_SHORTCUTS_MENU)); |
410 | } | 410 | } |
411 | 411 | ||
412 | pop_current_activity(); | 412 | if (ret & QUICKSCREEN_GOTO_SHORTCUTS_MENU) /* Eliminate flashing of parent during */ |
413 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); /* transition to Shortcuts */ | ||
414 | else | ||
415 | pop_current_activity(ACTIVITY_REFRESH_NOW); | ||
413 | 416 | ||
414 | return ret; | 417 | return ret; |
415 | } | 418 | } |
diff --git a/apps/gui/usb_screen.c b/apps/gui/usb_screen.c index 31321ec005..05e60067e0 100644 --- a/apps/gui/usb_screen.c +++ b/apps/gui/usb_screen.c | |||
@@ -315,5 +315,5 @@ void gui_usb_screen_run(bool early_usb) | |||
315 | viewportmanager_theme_undo(i, false); | 315 | viewportmanager_theme_undo(i, false); |
316 | } | 316 | } |
317 | 317 | ||
318 | pop_current_activity(); | 318 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
319 | } | 319 | } |
diff --git a/apps/menus/playlist_menu.c b/apps/menus/playlist_menu.c index 89c93edc2e..981ec74798 100644 --- a/apps/menus/playlist_menu.c +++ b/apps/menus/playlist_menu.c | |||
@@ -138,6 +138,8 @@ int save_playlist_screen(struct playlist_info* playlist) | |||
138 | static int playlist_view_(void) | 138 | static int playlist_view_(void) |
139 | { | 139 | { |
140 | playlist_viewer_ex(NULL, NULL); | 140 | playlist_viewer_ex(NULL, NULL); |
141 | FOR_NB_SCREENS(i) /* Playlist Viewer defers skin updates when popping its activity */ | ||
142 | skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_ALL); | ||
141 | return 0; | 143 | return 0; |
142 | } | 144 | } |
143 | MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), | 145 | MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), |
diff --git a/apps/menus/time_menu.c b/apps/menus/time_menu.c index e37e2b5637..b44d47ff8b 100644 --- a/apps/menus/time_menu.c +++ b/apps/menus/time_menu.c | |||
@@ -304,7 +304,7 @@ int time_screen(void* ignored) | |||
304 | #endif | 304 | #endif |
305 | 305 | ||
306 | ret = do_menu(&time_menu, NULL, menu, false); | 306 | ret = do_menu(&time_menu, NULL, menu, false); |
307 | pop_current_activity(); | 307 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
308 | /* see comments above in the button callback */ | 308 | /* see comments above in the button callback */ |
309 | if (!menu_was_pressed && ret == GO_TO_PREVIOUS) | 309 | if (!menu_was_pressed && ret == GO_TO_PREVIOUS) |
310 | return 0; | 310 | return 0; |
diff --git a/apps/misc.c b/apps/misc.c index 950662d19a..7da3c57c73 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -1579,13 +1579,14 @@ void push_current_activity(enum current_activity screen) | |||
1579 | } | 1579 | } |
1580 | } | 1580 | } |
1581 | 1581 | ||
1582 | void pop_current_activity(void) | 1582 | void pop_current_activity(enum activity_refresh refresh) |
1583 | { | 1583 | { |
1584 | current_activity_top--; | 1584 | current_activity_top--; |
1585 | FOR_NB_SCREENS(i) | 1585 | FOR_NB_SCREENS(i) |
1586 | { | 1586 | { |
1587 | skinlist_set_cfg(i, NULL); | 1587 | skinlist_set_cfg(i, NULL); |
1588 | skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_ALL); | 1588 | if (ACTIVITY_REFRESH_NOW == refresh) |
1589 | skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_ALL); | ||
1589 | } | 1590 | } |
1590 | } | 1591 | } |
1591 | enum current_activity get_current_activity(void) | 1592 | enum current_activity get_current_activity(void) |
diff --git a/apps/misc.h b/apps/misc.h index af520a7fd1..4f4527f686 100644 --- a/apps/misc.h +++ b/apps/misc.h | |||
@@ -214,8 +214,14 @@ struct mp3entry; | |||
214 | int id3_get_replaygain_mode(const struct mp3entry *id3); | 214 | int id3_get_replaygain_mode(const struct mp3entry *id3); |
215 | void replaygain_update(void); | 215 | void replaygain_update(void); |
216 | 216 | ||
217 | enum activity_refresh | ||
218 | { | ||
219 | ACTIVITY_REFRESH_DEFERRED = 0, | ||
220 | ACTIVITY_REFRESH_NOW, | ||
221 | }; | ||
222 | |||
217 | void push_current_activity(enum current_activity screen); | 223 | void push_current_activity(enum current_activity screen); |
218 | void pop_current_activity(void); | 224 | void pop_current_activity(enum activity_refresh refresh); |
219 | enum current_activity get_current_activity(void); | 225 | enum current_activity get_current_activity(void); |
220 | 226 | ||
221 | /* format a sound value like: -1.05 dB */ | 227 | /* format a sound value like: -1.05 dB */ |
diff --git a/apps/onplay.c b/apps/onplay.c index f2dbf8b3bf..7ea6b9035b 100644 --- a/apps/onplay.c +++ b/apps/onplay.c | |||
@@ -144,6 +144,15 @@ static bool clipboard_clip(struct clipboard *clip, const char *path, | |||
144 | /* interface function. */ | 144 | /* interface function. */ |
145 | /* ----------------------------------------------------------------------- */ | 145 | /* ----------------------------------------------------------------------- */ |
146 | 146 | ||
147 | |||
148 | static int bookmark_load_menu_wrapper(void) | ||
149 | { | ||
150 | if (get_current_activity() == ACTIVITY_CONTEXTMENU) /* get rid of parent activity */ | ||
151 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); /* when called from ctxt menu */ | ||
152 | |||
153 | return bookmark_load_menu(); | ||
154 | } | ||
155 | |||
147 | static int bookmark_menu_callback(int action, | 156 | static int bookmark_menu_callback(int action, |
148 | const struct menu_item_ex *this_item, | 157 | const struct menu_item_ex *this_item, |
149 | struct gui_synclist *this_list); | 158 | struct gui_synclist *this_list); |
@@ -153,7 +162,7 @@ MENUITEM_FUNCTION(bookmark_create_menu_item, 0, | |||
153 | bookmark_menu_callback, Icon_Bookmark); | 162 | bookmark_menu_callback, Icon_Bookmark); |
154 | MENUITEM_FUNCTION(bookmark_load_menu_item, 0, | 163 | MENUITEM_FUNCTION(bookmark_load_menu_item, 0, |
155 | ID2P(LANG_BOOKMARK_MENU_LIST), | 164 | ID2P(LANG_BOOKMARK_MENU_LIST), |
156 | bookmark_load_menu, NULL, | 165 | bookmark_load_menu_wrapper, NULL, |
157 | bookmark_menu_callback, Icon_Bookmark); | 166 | bookmark_menu_callback, Icon_Bookmark); |
158 | MAKE_ONPLAYMENU(bookmark_menu, ID2P(LANG_BOOKMARK_MENU), | 167 | MAKE_ONPLAYMENU(bookmark_menu, ID2P(LANG_BOOKMARK_MENU), |
159 | bookmark_menu_callback, Icon_Bookmark, | 168 | bookmark_menu_callback, Icon_Bookmark, |
@@ -462,7 +471,18 @@ static bool save_playlist(void) | |||
462 | return false; | 471 | return false; |
463 | } | 472 | } |
464 | 473 | ||
465 | extern struct menu_item_ex view_cur_playlist; /* from playlist_menu.c */ | 474 | static int wps_view_cur_playlist(void) |
475 | { | ||
476 | if (get_current_activity() == ACTIVITY_CONTEXTMENU) /* get rid of parent activity */ | ||
477 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); /* when called from ctxt menu */ | ||
478 | |||
479 | playlist_viewer_ex(NULL, NULL); | ||
480 | |||
481 | return 0; | ||
482 | } | ||
483 | |||
484 | MENUITEM_FUNCTION(wps_view_cur_playlist_item, 0, ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), | ||
485 | wps_view_cur_playlist, NULL, NULL, Icon_NOICON); | ||
466 | MENUITEM_FUNCTION(search_playlist_item, 0, ID2P(LANG_SEARCH_IN_PLAYLIST), | 486 | MENUITEM_FUNCTION(search_playlist_item, 0, ID2P(LANG_SEARCH_IN_PLAYLIST), |
467 | search_playlist, NULL, NULL, Icon_Playlist); | 487 | search_playlist, NULL, NULL, Icon_Playlist); |
468 | MENUITEM_FUNCTION(playlist_save_item, 0, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), | 488 | MENUITEM_FUNCTION(playlist_save_item, 0, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), |
@@ -473,7 +493,7 @@ MENUITEM_FUNCTION(playing_time_item, 0, ID2P(LANG_PLAYING_TIME), | |||
473 | playing_time, NULL, NULL, Icon_Playlist); | 493 | playing_time, NULL, NULL, Icon_Playlist); |
474 | MAKE_ONPLAYMENU( wps_playlist_menu, ID2P(LANG_PLAYLIST), | 494 | MAKE_ONPLAYMENU( wps_playlist_menu, ID2P(LANG_PLAYLIST), |
475 | NULL, Icon_Playlist, | 495 | NULL, Icon_Playlist, |
476 | &view_cur_playlist, &search_playlist_item, | 496 | &wps_view_cur_playlist_item, &search_playlist_item, |
477 | &playlist_save_item, &reshuffle_item, &playing_time_item | 497 | &playlist_save_item, &reshuffle_item, &playing_time_item |
478 | ); | 498 | ); |
479 | 499 | ||
@@ -1499,6 +1519,9 @@ MENUITEM_FUNCTION(view_cue_item, 0, ID2P(LANG_BROWSE_CUESHEET), | |||
1499 | 1519 | ||
1500 | static int browse_id3_wrapper(void) | 1520 | static int browse_id3_wrapper(void) |
1501 | { | 1521 | { |
1522 | if (get_current_activity() == ACTIVITY_CONTEXTMENU) /* get rid of parent activity */ | ||
1523 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); /* when called from ctxt menu */ | ||
1524 | |||
1502 | if (browse_id3(audio_current_track(), | 1525 | if (browse_id3(audio_current_track(), |
1503 | playlist_get_display_index(), | 1526 | playlist_get_display_index(), |
1504 | playlist_amount())) | 1527 | playlist_amount())) |
@@ -1954,7 +1977,9 @@ int onplay(char* file, int attr, int from, bool hotkey) | |||
1954 | else | 1977 | else |
1955 | menu = &tree_onplay_menu; | 1978 | menu = &tree_onplay_menu; |
1956 | menu_selection = do_menu(menu, NULL, NULL, false); | 1979 | menu_selection = do_menu(menu, NULL, NULL, false); |
1957 | pop_current_activity(); | 1980 | |
1981 | if (get_current_activity() == ACTIVITY_CONTEXTMENU) /* Activity may have been */ | ||
1982 | pop_current_activity(ACTIVITY_REFRESH_NOW); /* popped already by menu item */ | ||
1958 | 1983 | ||
1959 | switch (menu_selection) | 1984 | switch (menu_selection) |
1960 | { | 1985 | { |
diff --git a/apps/playlist_viewer.c b/apps/playlist_viewer.c index 4abd3ee1c5..90a47c35ea 100644 --- a/apps/playlist_viewer.c +++ b/apps/playlist_viewer.c | |||
@@ -1015,7 +1015,14 @@ enum playlist_viewer_result playlist_viewer_ex(const char* filename, | |||
1015 | case ACTION_STD_QUICKSCREEN: | 1015 | case ACTION_STD_QUICKSCREEN: |
1016 | if (!global_settings.shortcuts_replaces_qs) | 1016 | if (!global_settings.shortcuts_replaces_qs) |
1017 | { | 1017 | { |
1018 | quick_screen_quick(button); | 1018 | if (quick_screen_quick(button) == |
1019 | QUICKSCREEN_GOTO_SHORTCUTS_MENU) /* currently disabled */ | ||
1020 | { | ||
1021 | /* QuickScreen defers skin updates when popping its activity | ||
1022 | to switch to Shortcuts Menu, so make up for that here: */ | ||
1023 | FOR_NB_SCREENS(i) | ||
1024 | skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_ALL); | ||
1025 | } | ||
1019 | update_playlist(true); | 1026 | update_playlist(true); |
1020 | prepare_lists(&playlist_lists); | 1027 | prepare_lists(&playlist_lists); |
1021 | } | 1028 | } |
@@ -1092,7 +1099,7 @@ exit: | |||
1092 | static void close_playlist_viewer(void) | 1099 | static void close_playlist_viewer(void) |
1093 | { | 1100 | { |
1094 | talk_shutup(); | 1101 | talk_shutup(); |
1095 | pop_current_activity(); | 1102 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); |
1096 | if (viewer.playlist) | 1103 | if (viewer.playlist) |
1097 | { | 1104 | { |
1098 | if (viewer.initial_selection) | 1105 | if (viewer.initial_selection) |
diff --git a/apps/plugin.c b/apps/plugin.c index 128b52ea2d..b8897c95ee 100644 --- a/apps/plugin.c +++ b/apps/plugin.c | |||
@@ -919,7 +919,7 @@ int plugin_load(const char* plugin, const void* parameter) | |||
919 | int rc = p_hdr->entry_point(parameter); | 919 | int rc = p_hdr->entry_point(parameter); |
920 | 920 | ||
921 | tree_unlock_cache(tree_get_context()); | 921 | tree_unlock_cache(tree_get_context()); |
922 | pop_current_activity(); | 922 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
923 | 923 | ||
924 | if (!pfn_tsr_exit) | 924 | if (!pfn_tsr_exit) |
925 | { /* close handle if plugin is no tsr one */ | 925 | { /* close handle if plugin is no tsr one */ |
diff --git a/apps/plugins/pitch_screen.c b/apps/plugins/pitch_screen.c index e24e0240a2..76e7fa9775 100644 --- a/apps/plugins/pitch_screen.c +++ b/apps/plugins/pitch_screen.c | |||
@@ -1109,7 +1109,7 @@ int gui_syncpitchscreen_run(void) | |||
1109 | } | 1109 | } |
1110 | 1110 | ||
1111 | //rb->pcmbuf_set_low_latency(false); | 1111 | //rb->pcmbuf_set_low_latency(false); |
1112 | //pop_current_activity(); | 1112 | //pop_current_activity(ACTIVITY_REFRESH_NOW); |
1113 | 1113 | ||
1114 | /* Clean up */ | 1114 | /* Clean up */ |
1115 | FOR_NB_SCREENS(i) | 1115 | FOR_NB_SCREENS(i) |
diff --git a/apps/radio/radio.c b/apps/radio/radio.c index bf8ad865dd..a02d4429fa 100644 --- a/apps/radio/radio.c +++ b/apps/radio/radio.c | |||
@@ -729,7 +729,7 @@ void radio_screen(void) | |||
729 | cpu_idle_mode(false); | 729 | cpu_idle_mode(false); |
730 | #endif | 730 | #endif |
731 | fms_fix_displays(FMS_EXIT); | 731 | fms_fix_displays(FMS_EXIT); |
732 | pop_current_activity(); | 732 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
733 | in_screen = false; | 733 | in_screen = false; |
734 | } /* radio_screen */ | 734 | } /* radio_screen */ |
735 | 735 | ||
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 6c52adf5d3..374583cc21 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c | |||
@@ -1844,7 +1844,7 @@ rec_abort: | |||
1844 | #endif | 1844 | #endif |
1845 | 1845 | ||
1846 | settings_save(); | 1846 | settings_save(); |
1847 | pop_current_activity(); | 1847 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
1848 | return (rec_status & RCSTAT_BEEN_IN_USB_MODE) != 0; | 1848 | return (rec_status & RCSTAT_BEEN_IN_USB_MODE) != 0; |
1849 | } /* recording_screen */ | 1849 | } /* recording_screen */ |
1850 | 1850 | ||
diff --git a/apps/root_menu.c b/apps/root_menu.c index 80b5be1d36..3553b794fa 100644 --- a/apps/root_menu.c +++ b/apps/root_menu.c | |||
@@ -276,7 +276,14 @@ static int browser(void* param) | |||
276 | 276 | ||
277 | browse_context_init(&browse, filter, 0, NULL, NOICON, folder, NULL); | 277 | browse_context_init(&browse, filter, 0, NULL, NOICON, folder, NULL); |
278 | ret_val = rockbox_browse(&browse); | 278 | ret_val = rockbox_browse(&browse); |
279 | pop_current_activity(); | 279 | |
280 | if (ret_val == GO_TO_WPS | ||
281 | || ret_val == GO_TO_PREVIOUS_MUSIC | ||
282 | || ret_val == GO_TO_PLUGIN) | ||
283 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
284 | else | ||
285 | pop_current_activity(ACTIVITY_REFRESH_NOW); | ||
286 | |||
280 | switch ((intptr_t)param) | 287 | switch ((intptr_t)param) |
281 | { | 288 | { |
282 | case GO_TO_FILEBROWSER: | 289 | case GO_TO_FILEBROWSER: |
@@ -336,7 +343,23 @@ static int wpsscrn(void* param) | |||
336 | { | 343 | { |
337 | splash(HZ*2, ID2P(LANG_NOTHING_TO_RESUME)); | 344 | splash(HZ*2, ID2P(LANG_NOTHING_TO_RESUME)); |
338 | } | 345 | } |
339 | pop_current_activity(); | 346 | |
347 | if (ret_val == GO_TO_PLAYLIST_VIEWER | ||
348 | || ret_val == GO_TO_PLUGIN | ||
349 | || ret_val == GO_TO_WPS | ||
350 | || ret_val == GO_TO_PREVIOUS_MUSIC | ||
351 | || ret_val == GO_TO_PREVIOUS_BROWSER | ||
352 | || (ret_val == GO_TO_PREVIOUS | ||
353 | && (last_screen == GO_TO_MAINMENU /* Settings */ | ||
354 | || last_screen == GO_TO_BROWSEPLUGINS | ||
355 | || last_screen == GO_TO_SYSTEM_SCREEN | ||
356 | || last_screen == GO_TO_PLAYLISTS_SCREEN))) | ||
357 | { | ||
358 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
359 | } | ||
360 | else | ||
361 | pop_current_activity(ACTIVITY_REFRESH_NOW); | ||
362 | |||
340 | return ret_val; | 363 | return ret_val; |
341 | } | 364 | } |
342 | #if CONFIG_TUNER | 365 | #if CONFIG_TUNER |
@@ -370,10 +393,14 @@ static int playlist_view_catalog(void * param) | |||
370 | (void)param; | 393 | (void)param; |
371 | push_current_activity(ACTIVITY_PLAYLISTBROWSER); | 394 | push_current_activity(ACTIVITY_PLAYLISTBROWSER); |
372 | bool item_was_selected = catalog_view_playlists(); | 395 | bool item_was_selected = catalog_view_playlists(); |
373 | pop_current_activity(); | 396 | |
374 | if (item_was_selected) | 397 | if (item_was_selected) |
398 | { | ||
399 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
375 | return GO_TO_WPS; | 400 | return GO_TO_WPS; |
376 | return GO_TO_PREVIOUS; | 401 | } |
402 | pop_current_activity(ACTIVITY_REFRESH_NOW); | ||
403 | return GO_TO_ROOT; | ||
377 | } | 404 | } |
378 | 405 | ||
379 | static int playlist_view(void * param) | 406 | static int playlist_view(void * param) |
@@ -381,9 +408,7 @@ static int playlist_view(void * param) | |||
381 | (void)param; | 408 | (void)param; |
382 | int val; | 409 | int val; |
383 | 410 | ||
384 | push_current_activity(ACTIVITY_PLAYLISTVIEWER); | ||
385 | val = playlist_viewer(); | 411 | val = playlist_viewer(); |
386 | pop_current_activity(); | ||
387 | switch (val) | 412 | switch (val) |
388 | { | 413 | { |
389 | case PLAYLIST_VIEWER_MAINMENU: | 414 | case PLAYLIST_VIEWER_MAINMENU: |
@@ -682,7 +707,15 @@ static inline int load_screen(int screen) | |||
682 | ret_val = items[screen].function(items[screen].param); | 707 | ret_val = items[screen].function(items[screen].param); |
683 | 708 | ||
684 | if (activity != ACTIVITY_UNKNOWN) | 709 | if (activity != ACTIVITY_UNKNOWN) |
685 | pop_current_activity(); | 710 | { |
711 | if (ret_val == GO_TO_WPS | ||
712 | || ret_val == GO_TO_PREVIOUS_MUSIC) | ||
713 | { | ||
714 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
715 | } | ||
716 | else | ||
717 | pop_current_activity(ACTIVITY_REFRESH_NOW); | ||
718 | } | ||
686 | 719 | ||
687 | last_screen = screen; | 720 | last_screen = screen; |
688 | if (ret_val == GO_TO_PREVIOUS) | 721 | if (ret_val == GO_TO_PREVIOUS) |
@@ -708,7 +741,7 @@ static int load_context_screen(int selection) | |||
708 | 741 | ||
709 | if (context_menu) | 742 | if (context_menu) |
710 | retval = do_menu(context_menu, NULL, NULL, false); | 743 | retval = do_menu(context_menu, NULL, NULL, false); |
711 | pop_current_activity(); | 744 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
712 | return retval; | 745 | return retval; |
713 | } | 746 | } |
714 | 747 | ||
diff --git a/apps/screens.c b/apps/screens.c index db24e534c1..2ffdf68023 100644 --- a/apps/screens.c +++ b/apps/screens.c | |||
@@ -733,7 +733,7 @@ bool browse_id3(struct mp3entry *id3, int playlist_display_index, int playlist_a | |||
733 | } | 733 | } |
734 | } | 734 | } |
735 | 735 | ||
736 | pop_current_activity(); | 736 | pop_current_activity(ACTIVITY_REFRESH_NOW); |
737 | return ret; | 737 | return ret; |
738 | } | 738 | } |
739 | 739 | ||
diff --git a/apps/shortcuts.c b/apps/shortcuts.c index e52e38eb06..98edcf653e 100644 --- a/apps/shortcuts.c +++ b/apps/shortcuts.c | |||
@@ -718,7 +718,10 @@ int do_shortcut_menu(void *ignored) | |||
718 | } | 718 | } |
719 | } | 719 | } |
720 | } | 720 | } |
721 | pop_current_activity(); | 721 | if (GO_TO_PLUGIN == done) |
722 | pop_current_activity(ACTIVITY_REFRESH_DEFERRED); | ||
723 | else | ||
724 | pop_current_activity(ACTIVITY_REFRESH_NOW); | ||
722 | --buflib_move_lock; | 725 | --buflib_move_lock; |
723 | 726 | ||
724 | return done; | 727 | return done; |
diff --git a/apps/tree.c b/apps/tree.c index fa745319a9..3684e395a1 100644 --- a/apps/tree.c +++ b/apps/tree.c | |||
@@ -763,7 +763,7 @@ static int dirbrowse(void) | |||
763 | else if (ret == QUICKSCREEN_GOTO_SHORTCUTS_MENU) | 763 | else if (ret == QUICKSCREEN_GOTO_SHORTCUTS_MENU) |
764 | enter_shortcuts_menu = true; | 764 | enter_shortcuts_menu = true; |
765 | } | 765 | } |
766 | 766 | ||
767 | if (enter_shortcuts_menu && *tc.dirfilter < NUM_FILTER_MODES) | 767 | if (enter_shortcuts_menu && *tc.dirfilter < NUM_FILTER_MODES) |
768 | { | 768 | { |
769 | int last_screen = global_status.last_screen; | 769 | int last_screen = global_status.last_screen; |
@@ -774,7 +774,14 @@ static int dirbrowse(void) | |||
774 | else | 774 | else |
775 | return shortcut_ret; | 775 | return shortcut_ret; |
776 | } | 776 | } |
777 | 777 | else if (enter_shortcuts_menu) /* currently disabled */ | |
778 | { | ||
779 | /* QuickScreen defers skin updates, popping its activity, when | ||
780 | switching to Shortcuts Menu, so make up for that here: */ | ||
781 | FOR_NB_SCREENS(i) | ||
782 | skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_ALL); | ||
783 | } | ||
784 | |||
778 | restore = true; | 785 | restore = true; |
779 | break; | 786 | break; |
780 | } | 787 | } |