From 91ea92e50bd4f442b1eeceeea7c0e80bc7ee9d0f Mon Sep 17 00:00:00 2001 From: libretroadmin Date: Wed, 10 May 2023 21:30:09 +0200 Subject: [PATCH] Get rid of some menu_driver_ctl commands --- cheat_manager.c | 38 ++++--- command.c | 14 ++- core_option_manager.c | 18 ++-- gfx/video_shader_parse.c | 19 ++-- menu/cbs/menu_cbs_cancel.c | 16 +-- menu/cbs/menu_cbs_left.c | 16 +-- menu/cbs/menu_cbs_ok.c | 197 +++++++++++++++-------------------- menu/cbs/menu_cbs_right.c | 23 ++-- menu/cbs/menu_cbs_start.c | 86 +++++++-------- menu/drivers/materialui.c | 19 ++-- menu/drivers/ozone.c | 19 ++-- menu/drivers/rgui.c | 6 +- menu/drivers/xmb.c | 22 ++-- menu/menu_defines.h | 3 - menu/menu_displaylist.c | 6 +- menu/menu_driver.c | 34 +++--- menu/menu_setting.c | 19 ++-- retroarch.c | 25 ++--- tasks/task_menu_explore.c | 6 +- ui/drivers/qt/qt_dialogs.cpp | 16 ++- 20 files changed, 270 insertions(+), 332 deletions(-) diff --git a/cheat_manager.c b/cheat_manager.c index 7b382054ce..4e18ec7be1 100644 --- a/cheat_manager.c +++ b/cheat_manager.c @@ -791,11 +791,13 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, size_t idx, bool w { unsigned i; retro_ctx_memory_info_t meminfo; - bool refresh = false; bool is_search_initialization = (setting != NULL); rarch_system_info_t *system = &runloop_state_get_ptr()->system; unsigned offset = 0; cheat_manager_t *cheat_st = &cheat_manager_state; +#ifdef HAVE_MENU + struct menu_state *menu_st = menu_state_get_ptr(); +#endif cheat_st->num_memory_buffers = 0; cheat_st->total_memory_size = 0; @@ -940,10 +942,8 @@ int cheat_manager_initialize_memory(rarch_setting_t *setting, size_t idx, bool w #ifdef HAVE_MENU if (!wraparound) - { - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - } + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif return 0; @@ -1024,7 +1024,9 @@ static int cheat_manager_search(enum cheat_search_type search_type) unsigned int bits = 8; unsigned int offset = 0; unsigned int i = 0; - bool refresh = false; +#ifdef HAVE_MENU + struct menu_state *menu_st = menu_state_get_ptr(); +#endif if (cheat_st->num_memory_buffers == 0) { @@ -1139,8 +1141,8 @@ static int cheat_manager_search(enum cheat_search_type search_type) runloop_msg_queue_push(msg, 1, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); #ifdef HAVE_MENU - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif return 0; } @@ -1218,7 +1220,6 @@ int cheat_manager_add_matches(const char *path, const char *label, unsigned type, size_t menuidx, size_t entry_idx) { char msg[100]; - bool refresh = false; unsigned byte_part = 0; unsigned int idx = 0; unsigned int mask = 0; @@ -1229,6 +1230,9 @@ int cheat_manager_add_matches(const char *path, unsigned int offset = 0; cheat_manager_t *cheat_st = &cheat_manager_state; unsigned char *curr = cheat_st->curr_memory_buf; +#ifdef HAVE_MENU + struct menu_state *menu_st = menu_state_get_ptr(); +#endif if (cheat_st->num_matches + cheat_st->size > 100) { @@ -1300,10 +1304,9 @@ int cheat_manager_add_matches(const char *path, runloop_msg_queue_push(msg, 1, 180, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); #ifdef HAVE_MENU - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif - return 0; } @@ -1761,14 +1764,15 @@ int cheat_manager_copy_match(rarch_setting_t *setting, size_t idx, bool wraparou int cheat_manager_delete_match(rarch_setting_t *setting, size_t idx, bool wraparound) { - bool refresh = false; - cheat_manager_t *cheat_st = &cheat_manager_state; - + cheat_manager_t *cheat_st = &cheat_manager_state; +#ifdef HAVE_MENU + struct menu_state *menu_st = menu_state_get_ptr(); +#endif cheat_manager_match_action(CHEAT_MATCH_ACTION_TYPE_DELETE, cheat_st->match_idx, NULL, NULL, NULL, NULL); #ifdef HAVE_MENU - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif return 0; } diff --git a/command.c b/command.c index cddee08437..c1a988f83f 100644 --- a/command.c +++ b/command.c @@ -1871,10 +1871,9 @@ void command_event_save_current_config(enum override_type type) #ifdef HAVE_MENU { - bool refresh = false; - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } #endif } @@ -1909,10 +1908,9 @@ void command_event_remove_current_config(enum override_type type) #ifdef HAVE_MENU { - bool refresh = false; - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } #endif } diff --git a/core_option_manager.c b/core_option_manager.c index 9b61c4760c..7f05b05d1d 100644 --- a/core_option_manager.c +++ b/core_option_manager.c @@ -1727,9 +1727,9 @@ void core_option_manager_set_val(core_option_manager_t *opt, if (retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) && refresh_menu) { - bool refresh = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } #endif } @@ -1779,9 +1779,9 @@ void core_option_manager_adjust_val(core_option_manager_t* opt, if (retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) && refresh_menu) { - bool refresh = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } #endif } @@ -1825,9 +1825,9 @@ void core_option_manager_set_default(core_option_manager_t *opt, if (retroarch_ctl(RARCH_CTL_CORE_OPTION_UPDATE_DISPLAY, NULL) && refresh_menu) { - bool refresh = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } #endif } diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 64df7f147b..8a2c68d19d 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -3114,18 +3114,17 @@ const char *video_shader_get_current_shader_preset(void) void video_shader_toggle(settings_t *settings) { - bool toggle = !settings->bools.video_shader_enable; - bool refresh = false; - struct video_shader *shader = menu_shader_get(); - - shader->flags |= SHDR_FLAG_MODIFIED; + bool toggle = !settings->bools.video_shader_enable; + bool refresh = false; + struct video_shader *shader = menu_shader_get(); + struct menu_state *menu_st = menu_state_get_ptr(); + shader->flags |= SHDR_FLAG_MODIFIED; if (toggle) - shader->flags &= ~SHDR_FLAG_DISABLED; + shader->flags &= ~SHDR_FLAG_DISABLED; else - shader->flags |= SHDR_FLAG_DISABLED; - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + shader->flags |= SHDR_FLAG_DISABLED; + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL); diff --git a/menu/cbs/menu_cbs_cancel.c b/menu/cbs/menu_cbs_cancel.c index eaf106d50b..5d00c9c581 100644 --- a/menu/cbs/menu_cbs_cancel.c +++ b/menu/cbs/menu_cbs_cancel.c @@ -56,17 +56,13 @@ int action_cancel_pop_default(const char *path, && menu_driver_search_filter_enabled(menu_label, menu_type) && menu_entries_search_pop()) { - bool refresh = false; - /* Reset navigation pointer */ menu_st->selection_ptr = 0; if (menu_st->driver_ctx->navigation_set) menu_st->driver_ctx->navigation_set(menu_st->userdata, false); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } @@ -128,17 +124,13 @@ static int action_cancel_core_content(const char *path, && menu_entries_search_pop()) { struct menu_state *menu_st = menu_state_get_ptr(); - bool refresh = false; - /* Reset navigation pointer */ menu_st->selection_ptr = 0; if (menu_st->driver_ctx->navigation_set) menu_st->driver_ctx->navigation_set(menu_st->userdata, false); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index c4ee687b4a..03c6ba1434 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -355,14 +355,14 @@ static int action_left_shader_filter_default(unsigned type, const char *label, static int action_left_cheat_num_passes(unsigned type, const char *label, bool wraparound) { - bool refresh = false; - unsigned new_size = 0; - unsigned cheat_size = cheat_manager_get_size(); + unsigned new_size = 0; + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned cheat_size = cheat_manager_get_size(); if (cheat_size) new_size = cheat_size - 1; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_EMU); return 0; @@ -373,7 +373,7 @@ static int action_left_cheat_num_passes(unsigned type, const char *label, static int action_left_shader_num_passes(unsigned type, const char *label, bool wraparound) { - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); struct video_shader *shader = menu_shader_get(); unsigned pass_count = shader ? shader->passes : 0; @@ -383,8 +383,8 @@ static int action_left_shader_num_passes(unsigned type, const char *label, if (pass_count > 0) shader->passes--; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; video_shader_resolve_parameters(shader); shader->flags |= SHDR_FLAG_MODIFIED; diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index c27f09444c..fceae47e89 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -3426,46 +3426,40 @@ static int action_ok_shader_preset_remove_game(const char *path, static int action_ok_video_filter_remove(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - settings_t *settings = config_get_ptr(); - + struct menu_state *menu_st = menu_state_get_ptr(); + settings_t *settings = config_get_ptr(); if (!settings) return -1; - if (!string_is_empty(settings->paths.path_softfilter_plugin)) { - bool refresh = false; - /* Unload video filter */ settings->paths.path_softfilter_plugin[0] = '\0'; command_event(CMD_EVENT_REINIT, NULL); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } - return 0; } static int action_ok_audio_dsp_plugin_remove(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - settings_t *settings = config_get_ptr(); + struct menu_state *menu_st = menu_state_get_ptr(); + settings_t *settings = config_get_ptr(); if (!settings) return -1; if (!string_is_empty(settings->paths.path_audio_dsp_plugin)) { - bool refresh = false; - - /* Unload dsp plugin filter */ + /* Unload DSP plugin filter */ settings->paths.path_audio_dsp_plugin[0] = '\0'; command_event(CMD_EVENT_DSP_FILTER_INIT, NULL); /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } return 0; @@ -3527,13 +3521,13 @@ static int generic_action_ok_remap_file_operation(const char *path, #ifdef HAVE_CONFIGFILE char content_dir_name[PATH_MAX_LENGTH]; char remap_file_path[PATH_MAX_LENGTH]; + struct menu_state *menu_st = menu_state_get_ptr(); rarch_system_info_t *system = &runloop_state_get_ptr()->system; const char *core_name = system ? system->info.library_name : NULL; const char *rarch_path_basename = path_get(RARCH_PATH_BASENAME); bool has_content = !string_is_empty(rarch_path_basename); settings_t *settings = config_get_ptr(); const char *directory_input_remapping = settings->paths.directory_input_remapping; - bool refresh = false; content_dir_name[0] = '\0'; remap_file_path[0] = '\0'; @@ -3656,8 +3650,8 @@ static int generic_action_ok_remap_file_operation(const char *path, } /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif return 0; } @@ -4116,7 +4110,7 @@ push_dropdown_list: static int action_ok_cheat_reload_cheats(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); settings_t *settings = config_get_ptr(); const char *path_cheat_database = settings->paths.path_cheat_database; @@ -4125,8 +4119,8 @@ static int action_ok_cheat_reload_cheats(const char *path, cheat_manager_load_game_specific_cheats( path_cheat_database); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } #endif @@ -4166,13 +4160,13 @@ static int action_ok_cheat_add_top(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { int i; - struct item_cheat tmp; char msg[256]; - bool refresh = false; - unsigned int new_size = cheat_manager_get_size() + 1; + struct item_cheat tmp; + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned int new_size = cheat_manager_get_size() + 1; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_EMU); memcpy(&tmp, &cheat_manager_state.cheats[cheat_manager_state.size-1], @@ -4201,11 +4195,11 @@ static int action_ok_cheat_add_bottom(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { char msg[256]; - bool refresh = false; - unsigned int new_size = cheat_manager_get_size() + 1; + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned int new_size = cheat_manager_get_size() + 1; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_EMU); strlcpy(msg, @@ -4222,15 +4216,15 @@ static int action_ok_cheat_delete_all(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { char msg[256]; - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); cheat_manager_state.delete_state = 0; cheat_manager_realloc(0, CHEAT_HANDLER_TYPE_EMU); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; - strlcpy(msg, - msg_hash_to_str(MSG_CHEAT_DELETE_ALL_SUCCESS), sizeof(msg)); + strlcpy(msg, msg_hash_to_str(MSG_CHEAT_DELETE_ALL_SUCCESS), + sizeof(msg)); msg[sizeof(msg) - 1] = 0; runloop_msg_queue_push(msg, 1, 180, true, NULL, @@ -4245,8 +4239,8 @@ static int action_ok_cheat_add_new_after(const char *path, int i; char msg[256]; struct item_cheat tmp; - bool refresh = false; - unsigned int new_size = cheat_manager_get_size() + 1; + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned int new_size = cheat_manager_get_size() + 1; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_EMU); @@ -4262,8 +4256,8 @@ static int action_ok_cheat_add_new_after(const char *path, memcpy(&cheat_manager_state.cheats[cheat_manager_state.working_cheat.idx+1], &tmp, sizeof(struct item_cheat)); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; strlcpy(msg, msg_hash_to_str(MSG_CHEAT_ADD_AFTER_SUCCESS), sizeof(msg)); msg[sizeof(msg) - 1] = 0; @@ -4279,8 +4273,8 @@ static int action_ok_cheat_add_new_before(const char *path, int i; char msg[256]; struct item_cheat tmp; - bool refresh = false; - unsigned int new_size = cheat_manager_get_size() + 1; + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned int new_size = cheat_manager_get_size() + 1; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_EMU); @@ -4298,8 +4292,8 @@ static int action_ok_cheat_add_new_before(const char *path, memcpy(&cheat_manager_state.working_cheat, &tmp, sizeof(struct item_cheat)); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; strlcpy(msg, msg_hash_to_str(MSG_CHEAT_ADD_BEFORE_SUCCESS), sizeof(msg)); msg[sizeof(msg) - 1] = 0; @@ -4315,8 +4309,8 @@ static int action_ok_cheat_copy_before(const char *path, int i; struct item_cheat tmp; char msg[256]; - bool refresh = false; - unsigned int new_size = cheat_manager_get_size() + 1; + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned int new_size = cheat_manager_get_size() + 1; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_RETRO); memcpy(&tmp, &cheat_manager_state.cheats[cheat_manager_state.working_cheat.idx], sizeof(struct item_cheat)); @@ -4335,8 +4329,8 @@ static int action_ok_cheat_copy_before(const char *path, memcpy(&cheat_manager_state.cheats[tmp.idx], &tmp, sizeof(struct item_cheat)); memcpy(&cheat_manager_state.working_cheat, &tmp, sizeof(struct item_cheat)); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; strlcpy(msg, msg_hash_to_str(MSG_CHEAT_COPY_BEFORE_SUCCESS), sizeof(msg)); msg[sizeof(msg) - 1] = 0; @@ -4352,8 +4346,8 @@ static int action_ok_cheat_copy_after(const char *path, int i; struct item_cheat tmp; char msg[256]; - bool refresh = false; - unsigned int new_size = cheat_manager_get_size() + 1; + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned int new_size = cheat_manager_get_size() + 1; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_RETRO); @@ -4372,8 +4366,8 @@ static int action_ok_cheat_copy_after(const char *path, memcpy(&cheat_manager_state.cheats[cheat_manager_state.working_cheat.idx+1], &tmp, sizeof(struct item_cheat )); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; strlcpy(msg, msg_hash_to_str(MSG_CHEAT_COPY_AFTER_SUCCESS), sizeof(msg)); msg[sizeof(msg) - 1] = 0; @@ -4685,10 +4679,9 @@ static int action_ok_core_updater_list(const char *path, else #endif { - bool refresh = true; - /* Initial setup... */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NONBLOCKING_REFRESH; generic_action_ok_command(CMD_EVENT_NETWORK_INIT); /* Push core list update task */ @@ -5322,56 +5315,44 @@ DEFAULT_ACTION_OK_DOWNLOAD(action_ok_update_autoconfig_profiles, MENU_ENUM_LABEL static int action_ok_game_specific_core_options_create(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); core_options_create_override(true); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } static int action_ok_folder_specific_core_options_create(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); core_options_create_override(false); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } static int action_ok_game_specific_core_options_remove(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); core_options_remove_override(true); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } static int action_ok_folder_specific_core_options_remove(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); core_options_remove_override(false); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } @@ -5413,7 +5394,7 @@ int action_ok_close_content(const char *path, const char *label, unsigned type, const char *flush_target = msg_hash_to_str(MENU_ENUM_LABEL_MAIN_MENU); file_list_t *list = NULL; if (menu_st->entries.list) - list = MENU_LIST_GET(menu_st->entries.list, 0); + list = MENU_LIST_GET(menu_st->entries.list, 0); if (list && (list->size > 1)) { parent_label = list->list[list->size - 2].label; @@ -5424,12 +5405,12 @@ int action_ok_close_content(const char *path, const char *label, unsigned type, } menu_entries_flush_stack(flush_target, 0); - /* An annoyance - some menu drivers (Ozone...) call - * RARCH_MENU_CTL_SET_PREVENT_POPULATE in awkward - * places, which can cause breakage here when flushing - * the menu stack. We therefore have to force a - * RARCH_MENU_CTL_UNSET_PREVENT_POPULATE */ - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + /* An annoyance - some menu drivers (Ozone...) set + * MENU_ST_FLAG_PREVENT_POPULATE in awkward places, + * which can cause breakage here when flushing + * the menu stack. We therefore have to unset + * MENU_ST_FLAG_PREVENT_POPULATE */ + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; } return ret; @@ -6041,9 +6022,8 @@ static void wifi_menu_refresh_callback(retro_task_t *task, void *task_data, void *user_data, const char *error) { - bool refresh = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } static int action_ok_wifi_disconnect(const char *path, @@ -6087,9 +6067,9 @@ static void netplay_refresh_rooms_cb(retro_task_t *task, void *task_data, const char *label = NULL; unsigned menu_type = 0; enum msg_hash_enums enum_idx = MSG_UNKNOWN; - bool refresh = false; http_transfer_data_t *data = (http_transfer_data_t*)task_data; net_driver_state_t *net_st = networking_state_get_ptr(); + struct menu_state *menu_st = menu_state_get_ptr(); free(net_st->room_list); net_st->room_list = NULL; @@ -6146,8 +6126,8 @@ static void netplay_refresh_rooms_cb(retro_task_t *task, void *task_data, free(room_data); done: - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } static int action_ok_push_netplay_refresh_rooms(const char *path, @@ -6167,10 +6147,10 @@ static void netplay_refresh_lan_cb(const void *data) const char *label = NULL; unsigned menu_type = 0; enum msg_hash_enums enum_idx = MSG_UNKNOWN; - bool refresh = false; const struct netplay_host_list *hosts = (const struct netplay_host_list*)data; net_driver_state_t *net_st = networking_state_get_ptr(); + struct menu_state *menu_st = menu_state_get_ptr(); free(net_st->room_list); net_st->room_list = NULL; @@ -6221,8 +6201,8 @@ static void netplay_refresh_lan_cb(const void *data) } done: - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } static int action_ok_push_netplay_refresh_lan(const char *path, @@ -6870,7 +6850,6 @@ static int action_ok_push_dropdown_item_input_select_physical_keyboard(const cha const char *keyboard_name; enum msg_hash_enums enum_idx; rarch_setting_t *setting = NULL; - bool refresh = false; settings_t *settings = config_get_ptr(); const char *menu_path = NULL; menu_entries_get_last_stack(&menu_path, NULL, NULL, NULL, NULL); @@ -6912,8 +6891,8 @@ static int action_ok_push_dropdown_item_input_select_physical_keyboard(const cha command_event(CMD_EVENT_REINIT, NULL); /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return action_cancel_pop_default(NULL, NULL, 0, 0); } @@ -7608,20 +7587,16 @@ static int action_ok_core_restore_backup(const char *path, static int action_ok_core_delete_backup(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - const char *backup_path = label; - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); + const char *backup_path = label; if (string_is_empty(backup_path)) return -1; - /* Delete backup file (if it exists) */ if (path_is_valid(backup_path)) filestream_delete(backup_path); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } @@ -7630,10 +7605,10 @@ static int action_ok_core_delete_backup(const char *path, int action_ok_core_lock(const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - const char *core_path = path; - bool lock = false; - bool refresh = false; - int ret = 0; + struct menu_state *menu_st = menu_state_get_ptr(); + const char *core_path = path; + bool lock = false; + int ret = 0; if (string_is_empty(core_path)) return -1; @@ -7684,8 +7659,8 @@ int action_ok_core_lock(const char *path, * refreshed - do this even in the event of an error, * since we don't want to leave the menu in an * undefined state */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return ret; } diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 5938606891..a5017a63e6 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -130,17 +130,13 @@ int action_right_cheat(unsigned type, const char *label, static int action_right_cheat_num_passes(unsigned type, const char *label, bool wraparound) { - bool refresh = false; - unsigned new_size = 0; - - new_size = cheat_manager_get_size() + 1; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + unsigned new_size = cheat_manager_get_size() + 1; + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE + | MENU_ST_FLAG_ENTRIES_NEED_REFRESH; cheat_manager_realloc(new_size, CHEAT_HANDLER_TYPE_EMU); - return 0; } - #endif static int action_right_input_desc_kbd(unsigned type, const char *label, @@ -390,7 +386,7 @@ static int action_right_shader_filter_default(unsigned type, const char *label, static int action_right_shader_num_passes(unsigned type, const char *label, bool wraparound) { - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); struct video_shader *shader = menu_shader_get(); unsigned pass_count = shader ? shader->passes : 0; @@ -400,8 +396,8 @@ static int action_right_shader_num_passes(unsigned type, const char *label, if (pass_count < GFX_MAX_SHADERS) shader->passes++; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE + | MENU_ST_FLAG_ENTRIES_NEED_REFRESH; video_shader_resolve_parameters(shader); shader->flags |= SHDR_FLAG_MODIFIED; @@ -800,19 +796,18 @@ static int manual_content_scan_core_name_right(unsigned type, const char *label, static int cpu_policy_mode_change(unsigned type, const char *label, bool wraparound) { - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); enum cpu_scaling_mode mode = get_cpu_scaling_mode(NULL); if (mode != CPUSCALING_MANUAL) mode++; set_cpu_scaling_mode(mode, NULL); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH; return 0; } static int cpu_policy_freq_managed_tweak(unsigned type, const char *label, bool wraparound) { - bool refresh = false; cpu_scaling_opts_t opts; enum cpu_scaling_mode mode = get_cpu_scaling_mode(&opts); diff --git a/menu/cbs/menu_cbs_start.c b/menu/cbs/menu_cbs_start.c index 2b48015d9b..5ec03b6934 100644 --- a/menu/cbs/menu_cbs_start.c +++ b/menu/cbs/menu_cbs_start.c @@ -86,19 +86,19 @@ static int action_start_remap_file_info( const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + struct menu_state *menu_st = menu_state_get_ptr(); settings_t *settings = config_get_ptr(); const char *directory_input_remapping = settings ? settings->paths.directory_input_remapping : NULL; rarch_system_info_t *system = &runloop_state_get_ptr()->system; - bool refresh = false; input_remapping_deinit(false); input_remapping_set_defaults(false); config_load_remap(directory_input_remapping, system); /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } @@ -107,15 +107,12 @@ static int action_start_override_file_info( const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - rarch_system_info_t *system = &runloop_state_get_ptr()->system; - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); + rarch_system_info_t *system = &runloop_state_get_ptr()->system; config_load_override(system); - /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return 0; } @@ -124,13 +121,11 @@ static int action_start_shader_preset( unsigned type, size_t idx, size_t entry_idx) { #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) - bool refresh = false; - struct video_shader *shader = menu_shader_get(); - - shader->passes = 0; - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + struct video_shader *shader = menu_shader_get(); + shader->passes = 0; + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL); #endif return 0; @@ -141,13 +136,11 @@ static int action_start_shader_preset_prepend( unsigned type, size_t idx, size_t entry_idx) { #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) - bool refresh = false; - struct video_shader* shader = menu_shader_get(); - - shader->passes = 0; - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + struct video_shader* shader = menu_shader_get(); + shader->passes = 0; + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL); #endif return 0; @@ -158,13 +151,11 @@ static int action_start_shader_preset_append( unsigned type, size_t idx, size_t entry_idx) { #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) - bool refresh = false; - struct video_shader* shader = menu_shader_get(); - - shader->passes = 0; - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + struct video_shader* shader = menu_shader_get(); + shader->passes = 0; + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; command_event(CMD_EVENT_SHADERS_APPLY_CHANGES, NULL); #endif return 0; @@ -181,15 +172,14 @@ static int action_start_video_filter_file_load( if (!string_is_empty(settings->paths.path_softfilter_plugin)) { - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); /* Unload video filter */ settings->paths.path_softfilter_plugin[0] = '\0'; command_event(CMD_EVENT_REINIT, NULL); /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } return 0; @@ -206,15 +196,14 @@ static int action_start_audio_dsp_plugin_file_load( if (!string_is_empty(settings->paths.path_audio_dsp_plugin)) { - bool refresh = false; - - /* Unload dsp plugin filter */ + struct menu_state *menu_st = menu_state_get_ptr(); + /* Unload DSP plugin filter */ settings->paths.path_audio_dsp_plugin[0] = '\0'; command_event(CMD_EVENT_DSP_FILTER_INIT, NULL); /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } return 0; @@ -642,12 +631,11 @@ static int action_start_load_core( const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { + struct menu_state *menu_st = menu_state_get_ptr(); int ret = generic_action_ok_command( CMD_EVENT_UNLOAD_CORE); - bool refresh = false; - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return ret; } @@ -687,9 +675,9 @@ static int action_start_core_lock( const char *path, const char *label, unsigned type, size_t idx, size_t entry_idx) { - const char *core_path = path; - bool refresh = false; - int ret = 0; + const char *core_path = path; + struct menu_state *menu_st = menu_state_get_ptr(); + int ret = 0; if (string_is_empty(core_path)) return -1; @@ -737,8 +725,8 @@ static int action_start_core_lock( * refreshed - do this even in the event of an error, * since we don't want to leave the menu in an * undefined state */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; return ret; } diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 8e70c91bda..17e82e1c0a 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -8638,8 +8638,9 @@ static void materialui_populate_entries( void *data, const char *path, const char *label, unsigned i) { - materialui_handle_t *mui = (materialui_handle_t*)data; - settings_t *settings = config_get_ptr(); + materialui_handle_t *mui = (materialui_handle_t*)data; + struct menu_state *menu_st = menu_state_get_ptr(); + settings_t *settings = config_get_ptr(); if (!mui || !settings) return; @@ -8793,8 +8794,8 @@ static void materialui_populate_entries( * (i.e. if we *did* reset the entry indices, the * selection pointer would incorrectly 'jump' from * the current selection to the top of the list) */ - if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL)) - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + if ((menu_st->flags & MENU_ST_FLAG_PREVENT_POPULATE) > 0) + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; else { mui->first_onscreen_entry = 0; @@ -8854,7 +8855,8 @@ static int materialui_environ(enum menu_environ_cb type, break; case MENU_ENVIRON_RESET_HORIZONTAL_LIST: { - settings_t *settings = config_get_ptr(); + settings_t *settings = config_get_ptr(); + struct menu_state *menu_st = menu_state_get_ptr(); /* Reset playlist icon list */ materialui_context_destroy_playlist_icons(mui); materialui_refresh_playlist_icon_list(mui, @@ -8868,11 +8870,8 @@ static int materialui_environ(enum menu_environ_cb type, * the menu must be refreshed (since icon indices * may have changed) */ if (mui->flags & MUI_FLAG_IS_PLAYLIST_TAB) - { - bool refresh = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - } + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE + | MENU_ST_FLAG_ENTRIES_NEED_REFRESH; } break; case MENU_ENVIRON_ENABLE_SCREENSAVER: diff --git a/menu/drivers/ozone.c b/menu/drivers/ozone.c index 48fd85a0b9..4d62223b2b 100644 --- a/menu/drivers/ozone.c +++ b/menu/drivers/ozone.c @@ -5028,12 +5028,14 @@ static void ozone_refresh_horizontal_list( ozone_handle_t *ozone, settings_t *settings) { + struct menu_state *menu_st = menu_state_get_ptr(); + ozone_context_destroy_horizontal_list(ozone); ozone_free_list_nodes(&ozone->horizontal_list, false); file_list_deinitialize(&ozone->horizontal_list); RHMAP_FREE(ozone->playlist_db_node_map); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE; ozone->horizontal_list.list = NULL; ozone->horizontal_list.capacity = 0; @@ -8629,6 +8631,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) settings_t *settings = config_get_ptr(); gfx_animation_t *p_anim = anim_get_ptr(); gfx_display_t *p_disp = disp_get_ptr(); + struct menu_state *menu_st = menu_state_get_ptr(); menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); const char *directory_assets = settings->paths.directory_assets; @@ -8735,7 +8738,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded) for (i = 0; i < OZONE_TAB_MAX_LENGTH; i++) ozone->tab_selection[i] = 0; - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; /* TODO/FIXME - we don't use framebuffer at all * for Ozone, we should refactor this dependency @@ -11887,9 +11890,9 @@ static void ozone_populate_entries( settings = config_get_ptr(); ozone_collapse_sidebar = settings->bools.ozone_collapse_sidebar; - if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL)) + if ((menu_st->flags & MENU_ST_FLAG_PREVENT_POPULATE) > 0) { - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; ozone_selection_changed(ozone, false); /* Refresh title for search terms */ @@ -12149,6 +12152,7 @@ static void ozone_populate_entries( static void ozone_toggle(void *userdata, bool menu_on) { settings_t *settings = NULL; + struct menu_state *menu_st = menu_state_get_ptr(); ozone_handle_t *ozone = (ozone_handle_t*) userdata; if (!ozone) @@ -12159,7 +12163,6 @@ static void ozone_toggle(void *userdata, bool menu_on) * 'save state' option */ if (ozone->is_quick_menu) { - struct menu_state *menu_st = menu_state_get_ptr(); ozone->flags &= ~(OZONE_FLAG_WANT_THUMBNAIL_BAR | OZONE_FLAG_SKIP_THUMBNAIL_RESET); gfx_thumbnail_reset(&ozone->thumbnails.savestate); @@ -12167,11 +12170,11 @@ static void ozone_toggle(void *userdata, bool menu_on) ozone_update_savestate_thumbnail_image(ozone); } - settings = config_get_ptr(); + settings = config_get_ptr(); if (menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL)) - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; else - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE; if (ozone->depth == 1) { diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index a697706dc2..c8c3366e1d 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -5013,10 +5013,8 @@ static void rgui_render( /* Refresh current menu, if required */ if (rgui->flags & RGUI_FLAG_FORCE_MENU_REFRESH) { - bool refresh = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; /* Menu entries may change as a result of the * refresh; skip rendering of the 'obsolete' * menu this frame, and force a redraw of the diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index f7da5c904f..3ee0ce17cb 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -2570,13 +2570,15 @@ static void xmb_context_reset_horizontal_list( static void xmb_refresh_horizontal_list(xmb_handle_t *xmb) { + struct menu_state *menu_st = menu_state_get_ptr(); + xmb_context_destroy_horizontal_list(xmb); xmb_free_list_nodes(&xmb->horizontal_list, false); file_list_deinitialize(&xmb->horizontal_list); RHMAP_FREE(xmb->playlist_db_node_map); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE; xmb_init_horizontal_list(xmb); @@ -2780,10 +2782,10 @@ static void xmb_populate_entries(void *data, } #endif - if (menu_driver_ctl(RARCH_MENU_CTL_IS_PREVENT_POPULATE, NULL)) + if ((menu_st->flags & MENU_ST_FLAG_PREVENT_POPULATE) > 0) { xmb_selection_pointer_changed(xmb, false); - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; /* Refresh title for search terms */ xmb_set_title(xmb); @@ -6667,6 +6669,7 @@ static void *xmb_init(void **userdata, bool video_is_threaded) gfx_animation_t *p_anim = anim_get_ptr(); gfx_display_t *p_disp = disp_get_ptr(); menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); + struct menu_state *menu_st = menu_state_get_ptr(); if (!menu) return NULL; @@ -6737,7 +6740,7 @@ static void *xmb_init(void **userdata, bool video_is_threaded) xmb->tabs[++xmb->system_tab_end] = XMB_SYSTEM_TAB_EXPLORE; #endif - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; /* TODO/FIXME - we don't use framebuffer at all * for XMB, we should refactor this dependency @@ -7755,13 +7758,14 @@ static void xmb_context_destroy(void *data) static void xmb_toggle(void *userdata, bool menu_on) { gfx_animation_ctx_entry_t entry; - bool tmp = false; - xmb_handle_t *xmb = (xmb_handle_t*)userdata; + bool tmp = false; + xmb_handle_t *xmb = (xmb_handle_t*)userdata; + struct menu_state *menu_st = menu_state_get_ptr(); if (!xmb) return; - xmb->depth = (int)xmb_list_get_size(xmb, MENU_LIST_PLAIN); + xmb->depth = (int)xmb_list_get_size(xmb, MENU_LIST_PLAIN); if (!menu_on) { @@ -7793,9 +7797,9 @@ static void xmb_toggle(void *userdata, bool menu_on) tmp = !menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL); if (tmp) - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE; else - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; xmb_toggle_horizontal_list(xmb); } diff --git a/menu/menu_defines.h b/menu/menu_defines.h index 68d6aa441c..ca2f9acd8a 100644 --- a/menu/menu_defines.h +++ b/menu/menu_defines.h @@ -59,9 +59,6 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_NONE = 0, RARCH_MENU_CTL_SET_PENDING_QUICK_MENU, RARCH_MENU_CTL_DEINIT, - RARCH_MENU_CTL_SET_PREVENT_POPULATE, - RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, - RARCH_MENU_CTL_IS_PREVENT_POPULATE, RARCH_MENU_CTL_POINTER_DOWN, RARCH_MENU_CTL_POINTER_UP, RARCH_MENU_CTL_OSK_PTR_AT_POS, diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 5228c6a276..1e534e9ca3 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -5680,9 +5680,9 @@ static void wifi_scan_callback(retro_task_t *task, void *task_data, void *user_data, const char *error) { - bool refresh = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE + | MENU_ST_FLAG_ENTRIES_NEED_REFRESH; } #endif diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 44a695ece5..443236d39e 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -4101,20 +4101,19 @@ static void menu_input_search_cb(void *userdata, const char *str) /* Do not apply search filter if string * consists of a single Latin alphabet * character */ - if (((str[1] != '\0') || (!ISALPHA(str[0]))) && - menu_driver_search_filter_enabled(label, type)) + if ( ((str[1] != '\0') || (!ISALPHA(str[0]))) + && menu_driver_search_filter_enabled(label, type)) { /* Add search term */ if (menu_entries_search_push(str)) { - bool refresh = false; /* Reset navigation pointer */ - menu_st->selection_ptr = 0; + menu_st->selection_ptr = 0; if (menu_st->driver_ctx->navigation_set) menu_st->driver_ctx->navigation_set(menu_st->userdata, false); /* Refresh menu */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE + | MENU_ST_FLAG_ENTRIES_NEED_REFRESH; } } /* Perform a regular search: jump to the @@ -6539,14 +6538,6 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) menu_st->flags |= MENU_ST_FLAG_PENDING_QUICK_MENU; } break; - case RARCH_MENU_CTL_SET_PREVENT_POPULATE: - menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE; - break; - case RARCH_MENU_CTL_UNSET_PREVENT_POPULATE: - menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; - break; - case RARCH_MENU_CTL_IS_PREVENT_POPULATE: - return ((menu_st->flags & MENU_ST_FLAG_PREVENT_POPULATE) > 0); case RARCH_MENU_CTL_DEINIT: if ( menu_st->driver_ctx && menu_st->driver_ctx->context_destroy) @@ -6753,11 +6744,12 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) #if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL) struct video_shader *menu_shader_get(void) { - video_driver_state_t - *video_st = video_state_get_ptr(); if (video_shader_any_supported()) + { + video_driver_state_t *video_st = video_state_get_ptr(); if (video_st) return video_st->menu_driver_shader; + } return NULL; } @@ -7812,12 +7804,12 @@ int generic_menu_entry_action( command_event(CMD_EVENT_UNLOAD_CORE, NULL); menu_entries_flush_stack(flush_target, 0); - /* An annoyance - some menu drivers (Ozone...) call - * RARCH_MENU_CTL_SET_PREVENT_POPULATE in awkward + /* An annoyance - some menu drivers (Ozone...) set + * MENU_ST_FLAG_PREVENT_POPULATE in awkward * places, which can cause breakage here when flushing - * the menu stack. We therefore have to force a - * RARCH_MENU_CTL_UNSET_PREVENT_POPULATE */ - menu_driver_ctl(RARCH_MENU_CTL_UNSET_PREVENT_POPULATE, NULL); + * the menu stack. We therefore have to unset + * MENU_ST_FLAG_PREVENT_POPULATE */ + menu_st->flags &= ~MENU_ST_FLAG_PREVENT_POPULATE; /* Ozone requires thumbnail refreshing */ menu_driver_ctl(RARCH_MENU_CTL_REFRESH_THUMBNAIL_IMAGE, &i); diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 26d9dbfa4b..96a320b32d 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -761,14 +761,11 @@ int setting_uint_action_right_default( int setting_bool_action_right_with_refresh( rarch_setting_t *setting, size_t idx, bool wraparound) { - bool refresh = false; - + struct menu_state *menu_st = menu_state_get_ptr(); setting_set_with_string_representation(setting, *setting->value.target.boolean ? "false" : "true"); - - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE + | MENU_ST_FLAG_ENTRIES_NEED_REFRESH; return 0; } @@ -7435,9 +7432,9 @@ static int setting_action_right_libretro_device_type( static int setting_action_right_input_remap_port( rarch_setting_t *setting, size_t idx, bool wraparound) { - bool refresh = false; - unsigned port = 0; - settings_t *settings = config_get_ptr(); + unsigned port = 0; + struct menu_state *menu_st = menu_state_get_ptr(); + settings_t *settings = config_get_ptr(); if (!setting) return -1; @@ -7458,8 +7455,8 @@ static int setting_action_right_input_remap_port( * ports are set to 'RETRO_DEVICE_NONE' */ command_event(CMD_EVENT_CONTROLLER_INIT, NULL); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_PREVENT_POPULATE + | MENU_ST_FLAG_ENTRIES_NEED_REFRESH; return 0; } diff --git a/retroarch.c b/retroarch.c index 2708687273..107d01bcfa 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3803,7 +3803,7 @@ bool command_event(enum event_command cmd, void *data) if (disk_control_enabled(&sys_info->disk_control)) { #if defined(HAVE_MENU) - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); /* Get initial disk eject state */ bool initial_disk_ejected = disk_control_get_eject_state(&sys_info->disk_control); #endif @@ -3817,10 +3817,8 @@ bool command_event(enum event_command cmd, void *data) * must refresh the disk options menu */ if (initial_disk_ejected != disk_control_get_eject_state( &sys_info->disk_control)) - { - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); - } + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif return success; } @@ -3840,13 +3838,16 @@ bool command_event(enum event_command cmd, void *data) if (disk_control_enabled(&sys_info->disk_control)) { - bool *show_msg = (bool*)data; - bool eject = !disk_control_get_eject_state(&sys_info->disk_control); - bool verbose = true; - bool refresh = false; + bool *show_msg = (bool*)data; + bool eject = !disk_control_get_eject_state( + &sys_info->disk_control); + bool verbose = true; +#if defined(HAVE_MENU) + struct menu_state *menu_st = menu_state_get_ptr(); +#endif if (show_msg) - verbose = *show_msg; + verbose = *show_msg; disk_control_set_eject_state( &sys_info->disk_control, eject, verbose); @@ -3854,8 +3855,8 @@ bool command_event(enum event_command cmd, void *data) #if defined(HAVE_MENU) /* It is necessary to refresh the disk options * menu when toggling the tray state */ - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif } else diff --git a/tasks/task_menu_explore.c b/tasks/task_menu_explore.c index 46491c4eb2..8c5d6dce9a 100644 --- a/tasks/task_menu_explore.c +++ b/tasks/task_menu_explore.c @@ -107,9 +107,9 @@ static void cb_task_menu_explore_init( if (menu_type == MENU_EXPLORE_TAB) { - bool refresh_nonblocking = false; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh_nonblocking); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + struct menu_state *menu_st = menu_state_get_ptr(); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; } } diff --git a/ui/drivers/qt/qt_dialogs.cpp b/ui/drivers/qt/qt_dialogs.cpp index fb1497a0c0..6ee2499f34 100644 --- a/ui/drivers/qt/qt_dialogs.cpp +++ b/ui/drivers/qt/qt_dialogs.cpp @@ -1011,30 +1011,26 @@ void CoreOptionsDialog::reload() void CoreOptionsDialog::onSaveGameSpecificOptions() { #ifdef HAVE_MENU - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); #endif - if (!core_options_create_override(true)) QMessageBox::critical(this, msg_hash_to_str(MSG_ERROR), msg_hash_to_str(MSG_ERROR_SAVING_CORE_OPTIONS_FILE)); - #ifdef HAVE_MENU - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif } void CoreOptionsDialog::onSaveFolderSpecificOptions() { #ifdef HAVE_MENU - bool refresh = false; + struct menu_state *menu_st = menu_state_get_ptr(); #endif - if (!core_options_create_override(false)) QMessageBox::critical(this, msg_hash_to_str(MSG_ERROR), msg_hash_to_str(MSG_ERROR_SAVING_CORE_OPTIONS_FILE)); - #ifdef HAVE_MENU - menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh); - menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL); + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH + | MENU_ST_FLAG_PREVENT_POPULATE; #endif }