diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index 33f83c207e..f75c1a303f 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -226,7 +226,7 @@ static int menu_settings_iterate(unsigned action) file_list_get_size(driver.menu->selection_buf)) menu_increment_navigation(driver.menu); else - menu_clear_navigation(driver.menu); + menu_clear_navigation(driver.menu, false); break; case MENU_ACTION_CANCEL: @@ -600,7 +600,7 @@ static int menu_common_iterate(unsigned action) menu_set_navigation(driver.menu, driver.menu->selection_ptr + scroll_speed); else - menu_clear_navigation(driver.menu); + menu_clear_navigation(driver.menu, false); break; case MENU_ACTION_LEFT: @@ -608,7 +608,7 @@ static int menu_common_iterate(unsigned action) menu_set_navigation(driver.menu, driver.menu->selection_ptr - fast_scroll_speed); else - menu_clear_navigation(driver.menu); + menu_clear_navigation(driver.menu, false); break; case MENU_ACTION_RIGHT: diff --git a/frontend/menu/disp/menu_display.h b/frontend/menu/disp/menu_display.h index 8aa06de2a4..f77bd9b36f 100644 --- a/frontend/menu/disp/menu_display.h +++ b/frontend/menu/disp/menu_display.h @@ -20,7 +20,7 @@ typedef struct menu_ctx_driver unsigned); void (*iterate)(void*, unsigned); int (*input_postprocess)(uint64_t, uint64_t); - void (*navigation_clear)(void *); + void (*navigation_clear)(void *, bool); void (*navigation_decrement)(void *); void (*navigation_increment)(void *); void (*navigation_set)(void *); diff --git a/frontend/menu/disp/rmenu_xui.cpp b/frontend/menu/disp/rmenu_xui.cpp index cc8979a84b..ac9a35323a 100644 --- a/frontend/menu/disp/rmenu_xui.cpp +++ b/frontend/menu/disp/rmenu_xui.cpp @@ -465,10 +465,14 @@ static void rmenu_xui_populate_entries(void *data, const char *path, XuiListSetCurSelVisible(m_menulist, menu->selection_ptr); } -static void rmenu_xui_navigation_clear(void *data) +static void rmenu_xui_navigation_clear(void *data, bool pending_push) { menu_handle_t *menu = (menu_handle_t*)data; - XuiListSetCurSelVisible(m_menulist, menu->selection_ptr); + + (void)pending_push; + + if (menu) + XuiListSetCurSelVisible(m_menulist, menu->selection_ptr); } static void rmenu_xui_navigation_set_visible(void *data) diff --git a/frontend/menu/disp/xmb.c b/frontend/menu/disp/xmb.c index 44a4c5b856..0ea12b0c96 100644 --- a/frontend/menu/disp/xmb.c +++ b/frontend/menu/disp/xmb.c @@ -771,9 +771,10 @@ static void xmb_context_reset(void *data) xmb->textures[k].id = xmb_png_texture_load(xmb->textures[k].path); } -static void xmb_navigation_clear(void *data) +static void xmb_navigation_clear(void *data, bool pending_push) { (void)data; + (void)pending_push; } static void xmb_navigation_decrement(void *data) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 6cebdaa73f..d5a4887b0b 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -192,7 +192,7 @@ bool menu_init_list(void *data) menu->list_settings = setting_data_new(SL_FLAG_ALL_SETTINGS); file_list_push(menu->menu_stack, "", "Main Menu", MENU_SETTINGS, 0); - menu_clear_navigation(menu); + menu_clear_navigation(menu, true); menu_entries_push_list(menu, menu->selection_buf, "", "Main Menu", 0); diff --git a/frontend/menu/menu_entries.c b/frontend/menu/menu_entries.c index f74f6329ca..6c9666ea75 100644 --- a/frontend/menu/menu_entries.c +++ b/frontend/menu/menu_entries.c @@ -30,7 +30,7 @@ static void entries_refresh(file_list_t *list) && file_list_get_size(list)) menu_set_navigation(driver.menu, file_list_get_size(list) - 1); else if (!file_list_get_size(list)) - menu_clear_navigation(driver.menu); + menu_clear_navigation(driver.menu, true); } static inline struct gfx_shader *shader_manager_get_current_shader( @@ -168,7 +168,7 @@ void menu_entries_push( size_t directory_ptr) { file_list_push(list, path, label, type, directory_ptr); - menu_clear_navigation(driver.menu); + menu_clear_navigation(driver.menu, true); driver.menu->need_refresh = true; } diff --git a/frontend/menu/menu_entries_cbs.c b/frontend/menu/menu_entries_cbs.c index dcf28d2861..0f60974169 100644 --- a/frontend/menu/menu_entries_cbs.c +++ b/frontend/menu/menu_entries_cbs.c @@ -62,7 +62,6 @@ static int action_ok_push_history_list(const char *path, menu_entries_push(driver.menu->menu_stack, "", label, type, driver.menu->selection_ptr); - menu_clear_navigation(driver.menu); menu_entries_push_list(driver.menu, driver.menu->selection_buf, path, label, type); return 0; @@ -285,7 +284,7 @@ static int action_ok_config_load(const char *path, driver.menu->msg_force = true; if (rarch_replace_config(config)) { - menu_clear_navigation(driver.menu); + menu_clear_navigation(driver.menu, false); return -1; } @@ -341,7 +340,7 @@ static int action_ok_file_load_with_detect_core(const char *path, "deferred_core_list", 0, driver.menu->selection_ptr); - menu_clear_navigation(driver.menu); + menu_clear_navigation(driver.menu, true); menu_entries_push_list( driver.menu, driver.menu->selection_buf, diff --git a/frontend/menu/menu_navigation.c b/frontend/menu/menu_navigation.c index 778559c702..447ca7edac 100644 --- a/frontend/menu/menu_navigation.c +++ b/frontend/menu/menu_navigation.c @@ -23,12 +23,12 @@ #include "menu_common.h" #include "menu_navigation.h" -void menu_clear_navigation(menu_handle_t *menu) +void menu_clear_navigation(menu_handle_t *menu, bool pending_push) { menu->selection_ptr = 0; if (driver.menu_ctx && driver.menu_ctx->navigation_clear) - driver.menu_ctx->navigation_clear(menu); + driver.menu_ctx->navigation_clear(menu, pending_push); } void menu_decrement_navigation(menu_handle_t *menu) diff --git a/frontend/menu/menu_navigation.h b/frontend/menu/menu_navigation.h index 65b7dc5f4b..9872e48c85 100644 --- a/frontend/menu/menu_navigation.h +++ b/frontend/menu/menu_navigation.h @@ -23,7 +23,7 @@ extern "C" { #endif -void menu_clear_navigation(menu_handle_t *menu); +void menu_clear_navigation(menu_handle_t *menu, bool pending_push); void menu_decrement_navigation(menu_handle_t *menu);