mirror of
https://github.com/libretro/RetroArch
synced 2025-02-21 09:39:56 +00:00
Create MENU_ENTRIES_CTL_SET_REFRESH/MENU_ENTRIES_CTL_UNSET_REFRESH
This commit is contained in:
parent
36ce2f1001
commit
1004537e8d
@ -298,6 +298,7 @@ size_t core_len;
|
|||||||
|
|
||||||
void cb_net_generic(void *task_data, void *user_data, const char *err)
|
void cb_net_generic(void *task_data, void *user_data, const char *err)
|
||||||
{
|
{
|
||||||
|
bool refresh = false;
|
||||||
http_transfer_data_t *data = (http_transfer_data_t*)task_data;
|
http_transfer_data_t *data = (http_transfer_data_t*)task_data;
|
||||||
|
|
||||||
if (core_buf)
|
if (core_buf)
|
||||||
@ -319,7 +320,7 @@ void cb_net_generic(void *task_data, void *user_data, const char *err)
|
|||||||
core_len = data->len;
|
core_len = data->len;
|
||||||
|
|
||||||
finish:
|
finish:
|
||||||
menu_entries_unset_refresh(true);
|
menu_entries_ctl(MENU_ENTRIES_CTL_UNSET_REFRESH, &refresh);
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
RARCH_ERR("Download failed: %s\n", err);
|
RARCH_ERR("Download failed: %s\n", err);
|
||||||
|
@ -242,11 +242,12 @@ static int action_left_shader_filter_default(unsigned type, const char *label,
|
|||||||
static int action_left_cheat_num_passes(unsigned type, const char *label,
|
static int action_left_cheat_num_passes(unsigned type, const char *label,
|
||||||
bool wraparound)
|
bool wraparound)
|
||||||
{
|
{
|
||||||
|
bool refresh = false;
|
||||||
unsigned new_size = 0;
|
unsigned new_size = 0;
|
||||||
|
|
||||||
if (cheat_manager_get_size())
|
if (cheat_manager_get_size())
|
||||||
new_size = cheat_manager_get_size() - 1;
|
new_size = cheat_manager_get_size() - 1;
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||||
cheat_manager_realloc(new_size);
|
cheat_manager_realloc(new_size);
|
||||||
|
|
||||||
@ -257,6 +258,7 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
|
|||||||
bool wraparound)
|
bool wraparound)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
|
bool refresh = false;
|
||||||
struct video_shader *shader = NULL;
|
struct video_shader *shader = NULL;
|
||||||
|
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||||
@ -266,7 +268,7 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
|
|||||||
|
|
||||||
if (shader->passes)
|
if (shader->passes)
|
||||||
shader->passes--;
|
shader->passes--;
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||||
video_shader_resolve_parameters(NULL, shader);
|
video_shader_resolve_parameters(NULL, shader);
|
||||||
|
|
||||||
|
@ -1417,8 +1417,9 @@ static int generic_action_ok_network(const char *path,
|
|||||||
unsigned type_id2 = 0;
|
unsigned type_id2 = 0;
|
||||||
const char *url_label = NULL;
|
const char *url_label = NULL;
|
||||||
rarch_task_callback_t callback = NULL;
|
rarch_task_callback_t callback = NULL;
|
||||||
|
bool refresh = true;
|
||||||
|
|
||||||
menu_entries_set_refresh(true);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
|
|
||||||
if (settings->network.buildbot_url[0] == '\0')
|
if (settings->network.buildbot_url[0] == '\0')
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -261,10 +261,11 @@ static int action_right_shader_filter_default(unsigned type, const char *label,
|
|||||||
static int action_right_cheat_num_passes(unsigned type, const char *label,
|
static int action_right_cheat_num_passes(unsigned type, const char *label,
|
||||||
bool wraparound)
|
bool wraparound)
|
||||||
{
|
{
|
||||||
|
bool refresh = false;
|
||||||
unsigned new_size = 0;
|
unsigned new_size = 0;
|
||||||
|
|
||||||
new_size = cheat_manager_get_size() + 1;
|
new_size = cheat_manager_get_size() + 1;
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||||
cheat_manager_realloc(new_size);
|
cheat_manager_realloc(new_size);
|
||||||
|
|
||||||
@ -275,6 +276,7 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
|
|||||||
bool wraparound)
|
bool wraparound)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
|
bool refresh = false;
|
||||||
struct video_shader *shader = NULL;
|
struct video_shader *shader = NULL;
|
||||||
|
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||||
@ -284,7 +286,7 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
|
|||||||
|
|
||||||
if ((shader->passes < GFX_MAX_SHADERS))
|
if ((shader->passes < GFX_MAX_SHADERS))
|
||||||
shader->passes++;
|
shader->passes++;
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
menu_driver_ctl(RARCH_MENU_CTL_SET_PREVENT_POPULATE, NULL);
|
||||||
video_shader_resolve_parameters(NULL, shader);
|
video_shader_resolve_parameters(NULL, shader);
|
||||||
|
|
||||||
|
@ -218,6 +218,7 @@ static int action_start_shader_filter_pass(unsigned type, const char *label)
|
|||||||
static int action_start_shader_num_passes(unsigned type, const char *label)
|
static int action_start_shader_num_passes(unsigned type, const char *label)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
|
bool refresh = false;
|
||||||
struct video_shader *shader = NULL;
|
struct video_shader *shader = NULL;
|
||||||
|
|
||||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
menu_driver_ctl(RARCH_MENU_CTL_SHADER_GET,
|
||||||
@ -228,7 +229,7 @@ static int action_start_shader_num_passes(unsigned type, const char *label)
|
|||||||
if (shader->passes)
|
if (shader->passes)
|
||||||
shader->passes = 0;
|
shader->passes = 0;
|
||||||
|
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
video_shader_resolve_parameters(NULL, shader);
|
video_shader_resolve_parameters(NULL, shader);
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
@ -238,7 +239,8 @@ static int action_start_cheat_num_passes(unsigned type, const char *label)
|
|||||||
{
|
{
|
||||||
if (cheat_manager_get_size())
|
if (cheat_manager_get_size())
|
||||||
{
|
{
|
||||||
menu_entries_set_refresh(false);
|
bool refresh = false;
|
||||||
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
cheat_manager_realloc(0);
|
cheat_manager_realloc(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2508,12 +2508,14 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type)
|
|||||||
break;
|
break;
|
||||||
case DISPLAYLIST_GENERIC:
|
case DISPLAYLIST_GENERIC:
|
||||||
{
|
{
|
||||||
|
bool refresh = false;
|
||||||
bool pending_push = true;
|
bool pending_push = true;
|
||||||
|
|
||||||
menu_driver_list_cache(MENU_LIST_PLAIN, 0);
|
menu_driver_list_cache(MENU_LIST_PLAIN, 0);
|
||||||
|
|
||||||
menu_entries_push(info->list, info->path, info->label, info->type, info->directory_ptr, 0);
|
menu_entries_push(info->list, info->path, info->label, info->type, info->directory_ptr, 0);
|
||||||
menu_navigation_ctl(MENU_NAVIGATION_CTL_CLEAR, &pending_push);
|
menu_navigation_ctl(MENU_NAVIGATION_CTL_CLEAR, &pending_push);
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DISPLAYLIST_USER_BINDS_LIST:
|
case DISPLAYLIST_USER_BINDS_LIST:
|
||||||
|
@ -296,7 +296,8 @@ static void menu_driver_toggle(bool latch)
|
|||||||
|
|
||||||
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
|
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
|
||||||
{
|
{
|
||||||
menu_entries_set_refresh(false);
|
bool refresh = false;
|
||||||
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
|
|
||||||
/* Menu should always run with vsync on. */
|
/* Menu should always run with vsync on. */
|
||||||
event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE);
|
event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE);
|
||||||
|
@ -169,6 +169,7 @@ static int menu_entries_flush_stack_type(const char *needle, const char *label,
|
|||||||
|
|
||||||
static bool menu_list_pop_stack(menu_list_t *list, size_t idx, size_t *directory_ptr)
|
static bool menu_list_pop_stack(menu_list_t *list, size_t idx, size_t *directory_ptr)
|
||||||
{
|
{
|
||||||
|
bool refresh = false;
|
||||||
file_list_t *menu_list = NULL;
|
file_list_t *menu_list = NULL;
|
||||||
if (!list)
|
if (!list)
|
||||||
return false;
|
return false;
|
||||||
@ -186,7 +187,7 @@ static bool menu_list_pop_stack(menu_list_t *list, size_t idx, size_t *directory
|
|||||||
file_list_pop(menu_list, directory_ptr);
|
file_list_pop(menu_list, directory_ptr);
|
||||||
menu_driver_list_set_selection(menu_list);
|
menu_driver_list_set_selection(menu_list);
|
||||||
|
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -194,6 +195,7 @@ static bool menu_list_pop_stack(menu_list_t *list, size_t idx, size_t *directory
|
|||||||
static void menu_list_flush_stack(menu_list_t *list,
|
static void menu_list_flush_stack(menu_list_t *list,
|
||||||
size_t idx, const char *needle, unsigned final_type)
|
size_t idx, const char *needle, unsigned final_type)
|
||||||
{
|
{
|
||||||
|
bool refresh = false;
|
||||||
const char *path = NULL;
|
const char *path = NULL;
|
||||||
const char *label = NULL;
|
const char *label = NULL;
|
||||||
unsigned type = 0;
|
unsigned type = 0;
|
||||||
@ -201,7 +203,7 @@ static void menu_list_flush_stack(menu_list_t *list,
|
|||||||
if (!list)
|
if (!list)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
menu_entries_get_last(list->menu_stack[idx],
|
menu_entries_get_last(list->menu_stack[idx],
|
||||||
&path, &label, &type, &entry_idx);
|
&path, &label, &type, &entry_idx);
|
||||||
|
|
||||||
@ -482,28 +484,6 @@ file_list_t *menu_entries_get_selection_buf_ptr(size_t idx)
|
|||||||
return menu_list->selection_buf[idx];
|
return menu_list->selection_buf[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
void menu_entries_set_refresh(bool nonblocking)
|
|
||||||
{
|
|
||||||
if (menu_entries_data)
|
|
||||||
{
|
|
||||||
if (nonblocking)
|
|
||||||
menu_entries_data->nonblocking_refresh = true;
|
|
||||||
else
|
|
||||||
menu_entries_data->need_refresh = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void menu_entries_unset_refresh(bool nonblocking)
|
|
||||||
{
|
|
||||||
if (menu_entries_data)
|
|
||||||
{
|
|
||||||
if (nonblocking)
|
|
||||||
menu_entries_data->nonblocking_refresh = false;
|
|
||||||
else
|
|
||||||
menu_entries_data->need_refresh = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool menu_entries_init(void)
|
static bool menu_entries_init(void)
|
||||||
{
|
{
|
||||||
menu_entries_t *entries = (menu_entries_t*)calloc(1, sizeof(*entries));
|
menu_entries_t *entries = (menu_entries_t*)calloc(1, sizeof(*entries));
|
||||||
@ -717,6 +697,28 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
|
|||||||
*settings = menu_entries_data->list_settings;
|
*settings = menu_entries_data->list_settings;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
case MENU_ENTRIES_CTL_SET_REFRESH:
|
||||||
|
if (menu_entries_data)
|
||||||
|
{
|
||||||
|
bool *nonblocking = (bool*)data;
|
||||||
|
|
||||||
|
if (*nonblocking)
|
||||||
|
menu_entries_data->nonblocking_refresh = true;
|
||||||
|
else
|
||||||
|
menu_entries_data->need_refresh = true;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case MENU_ENTRIES_CTL_UNSET_REFRESH:
|
||||||
|
if (menu_entries_data)
|
||||||
|
{
|
||||||
|
bool *nonblocking = (bool*)data;
|
||||||
|
|
||||||
|
if (*nonblocking)
|
||||||
|
menu_entries_data->nonblocking_refresh = false;
|
||||||
|
else
|
||||||
|
menu_entries_data->need_refresh = false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
case MENU_ENTRIES_CTL_INIT:
|
case MENU_ENTRIES_CTL_INIT:
|
||||||
return menu_entries_init();
|
return menu_entries_init();
|
||||||
case MENU_ENTRIES_CTL_SHOW_BACK:
|
case MENU_ENTRIES_CTL_SHOW_BACK:
|
||||||
|
@ -108,6 +108,8 @@ enum menu_entries_ctl_state
|
|||||||
MENU_ENTRIES_CTL_INIT,
|
MENU_ENTRIES_CTL_INIT,
|
||||||
MENU_ENTRIES_CTL_LIST_GET,
|
MENU_ENTRIES_CTL_LIST_GET,
|
||||||
MENU_ENTRIES_CTL_SETTINGS_GET,
|
MENU_ENTRIES_CTL_SETTINGS_GET,
|
||||||
|
MENU_ENTRIES_CTL_SET_REFRESH,
|
||||||
|
MENU_ENTRIES_CTL_UNSET_REFRESH,
|
||||||
MENU_ENTRIES_CTL_NEEDS_REFRESH,
|
MENU_ENTRIES_CTL_NEEDS_REFRESH,
|
||||||
MENU_ENTRIES_CTL_SHOW_BACK
|
MENU_ENTRIES_CTL_SHOW_BACK
|
||||||
};
|
};
|
||||||
@ -126,10 +128,6 @@ int menu_entries_get_title(char *title, size_t title_len);
|
|||||||
|
|
||||||
int menu_entries_get_core_title(char *title_msg, size_t title_msg_len);
|
int menu_entries_get_core_title(char *title_msg, size_t title_msg_len);
|
||||||
|
|
||||||
void menu_entries_set_refresh(bool nonblocking);
|
|
||||||
|
|
||||||
void menu_entries_unset_refresh(bool nonblocking);
|
|
||||||
|
|
||||||
file_list_t *menu_entries_get_selection_buf_ptr(size_t idx);
|
file_list_t *menu_entries_get_selection_buf_ptr(size_t idx);
|
||||||
|
|
||||||
file_list_t *menu_entries_get_menu_stack_ptr(size_t idx);
|
file_list_t *menu_entries_get_menu_stack_ptr(size_t idx);
|
||||||
|
@ -420,10 +420,11 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action)
|
|||||||
{
|
{
|
||||||
if (cbs && cbs->action_refresh)
|
if (cbs && cbs->action_refresh)
|
||||||
{
|
{
|
||||||
|
bool refresh = false;
|
||||||
file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0);
|
file_list_t *menu_stack = menu_entries_get_menu_stack_ptr(0);
|
||||||
|
|
||||||
cbs->action_refresh(selection_buf, menu_stack);
|
cbs->action_refresh(selection_buf, menu_stack);
|
||||||
menu_entries_unset_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_UNSET_REFRESH, &refresh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,6 +141,7 @@ void menu_shader_manager_set_preset(struct video_shader *shader,
|
|||||||
{
|
{
|
||||||
#ifdef HAVE_SHADER_MANAGER
|
#ifdef HAVE_SHADER_MANAGER
|
||||||
config_file_t *conf = NULL;
|
config_file_t *conf = NULL;
|
||||||
|
bool refresh = false;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
settings->video.shader_enable = false;
|
settings->video.shader_enable = false;
|
||||||
@ -177,7 +178,7 @@ void menu_shader_manager_set_preset(struct video_shader *shader,
|
|||||||
}
|
}
|
||||||
config_file_free(conf);
|
config_file_free(conf);
|
||||||
|
|
||||||
menu_entries_set_refresh(false);
|
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user