Get rid of some menu_driver_ctl commands

This commit is contained in:
libretroadmin 2023-05-10 21:30:09 +02:00
parent 6556dc8950
commit 91ea92e50b
20 changed files with 270 additions and 332 deletions

View file

@ -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;
}

View file

@ -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
}

View file

@ -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
}

View file

@ -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);

View file

@ -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;
}

View file

@ -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;

View file

@ -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;
}

View file

@ -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);

View file

@ -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;
}

View file

@ -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:

View file

@ -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)
{

View file

@ -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

View file

@ -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);
}

View file

@ -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,

View file

@ -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

View file

@ -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);

View file

@ -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;
}

View file

@ -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

View file

@ -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;
}
}

View file

@ -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
}