mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
Add MENU_DISPLAY_CTL_MSG_FORCE/MENU_DISPLAY_CTL_SET_MSG_FORCE
This commit is contained in:
parent
5b0671d572
commit
f83e26ea32
@ -501,16 +501,17 @@ static int generic_action_ok(const char *path,
|
|||||||
const char *label, unsigned type, size_t idx, size_t entry_idx,
|
const char *label, unsigned type, size_t idx, size_t entry_idx,
|
||||||
unsigned id, unsigned flush_id)
|
unsigned id, unsigned flush_id)
|
||||||
{
|
{
|
||||||
|
bool msg_force;
|
||||||
char action_path[PATH_MAX_LENGTH];
|
char action_path[PATH_MAX_LENGTH];
|
||||||
unsigned flush_type = 0;
|
unsigned flush_type = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
const char *menu_path = NULL;
|
const char *menu_path = NULL;
|
||||||
const char *flush_char = NULL;
|
const char *flush_char = NULL;
|
||||||
global_t *global = global_get_ptr();
|
global_t *global = global_get_ptr();
|
||||||
menu_display_t *disp = menu_display_get_ptr();
|
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
menu_list_t *menu_list = menu_list_get_ptr();
|
menu_list_t *menu_list = menu_list_get_ptr();
|
||||||
|
|
||||||
if (!menu || !menu_list)
|
if (!menu || !menu_list)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@ -558,10 +559,10 @@ static int generic_action_ok(const char *path,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ACTION_OK_LOAD_CONFIG_FILE:
|
case ACTION_OK_LOAD_CONFIG_FILE:
|
||||||
flush_char = NULL;
|
flush_char = NULL;
|
||||||
flush_type = MENU_SETTINGS;
|
flush_type = MENU_SETTINGS;
|
||||||
|
msg_force = true;
|
||||||
disp->msg_force = true;
|
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
|
||||||
|
|
||||||
if (rarch_replace_config(action_path))
|
if (rarch_replace_config(action_path))
|
||||||
{
|
{
|
||||||
|
@ -413,7 +413,6 @@ static void rgui_render(void)
|
|||||||
uint16_t *fb_data = NULL;
|
uint16_t *fb_data = NULL;
|
||||||
rgui_t *rgui = NULL;
|
rgui_t *rgui = NULL;
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
menu_display_t *disp = menu_display_get_ptr();
|
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
uint64_t *frame_count = video_driver_get_frame_count();
|
uint64_t *frame_count = video_driver_get_frame_count();
|
||||||
@ -433,8 +432,11 @@ static void rgui_render(void)
|
|||||||
|
|
||||||
if (!rgui->force_redraw)
|
if (!rgui->force_redraw)
|
||||||
{
|
{
|
||||||
bool is_idle;
|
bool is_idle, msg_force;
|
||||||
if (menu_entries_needs_refresh() && menu_driver_alive() && !disp->msg_force)
|
|
||||||
|
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
|
||||||
|
|
||||||
|
if (menu_entries_needs_refresh() && menu_driver_alive() && !msg_force)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle);
|
rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle);
|
||||||
@ -605,10 +607,12 @@ static void rgui_render(void)
|
|||||||
#ifdef GEKKO
|
#ifdef GEKKO
|
||||||
const char *message_queue;
|
const char *message_queue;
|
||||||
|
|
||||||
if (disp->msg_force)
|
if (msg_force)
|
||||||
{
|
{
|
||||||
|
msg_force = false;
|
||||||
message_queue = rarch_main_msg_queue_pull();
|
message_queue = rarch_main_msg_queue_pull();
|
||||||
disp->msg_force = false;
|
|
||||||
|
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
message_queue = driver->current_msg;
|
message_queue = driver->current_msg;
|
||||||
|
@ -123,13 +123,13 @@ end:
|
|||||||
|
|
||||||
static void rmenu_render(void)
|
static void rmenu_render(void)
|
||||||
{
|
{
|
||||||
|
bool msg_force;
|
||||||
size_t begin, end, i, j, selection;
|
size_t begin, end, i, j, selection;
|
||||||
struct font_params font_parms = {0};
|
struct font_params font_parms = {0};
|
||||||
char title[256] = {0};
|
char title[256] = {0};
|
||||||
char title_buf[256] = {0};
|
char title_buf[256] = {0};
|
||||||
char title_msg[64] = {0};
|
char title_msg[64] = {0};
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
menu_display_t *disp = menu_display_get_ptr();
|
|
||||||
menu_list_t *menu_list = menu_list_get_ptr();
|
menu_list_t *menu_list = menu_list_get_ptr();
|
||||||
uint64_t *frame_count = video_driver_get_frame_count();
|
uint64_t *frame_count = video_driver_get_frame_count();
|
||||||
size_t entries_end = menu_entries_get_end();
|
size_t entries_end = menu_entries_get_end();
|
||||||
@ -146,8 +146,10 @@ static void rmenu_render(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
|
||||||
|
|
||||||
if (menu_entries_needs_refresh() && menu_driver_alive()
|
if (menu_entries_needs_refresh() && menu_driver_alive()
|
||||||
&& !disp->msg_force)
|
&& !msg_force)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
menu_display_fb_unset_dirty();
|
menu_display_fb_unset_dirty();
|
||||||
|
@ -530,7 +530,7 @@ static void rmenu_xui_set_list_text(int index, const wchar_t* leftText,
|
|||||||
|
|
||||||
static void rmenu_xui_render(void)
|
static void rmenu_xui_render(void)
|
||||||
{
|
{
|
||||||
bool display_kb;
|
bool display_kb, msg_force;
|
||||||
unsigned fb_width;
|
unsigned fb_width;
|
||||||
size_t end, i, selection;
|
size_t end, i, selection;
|
||||||
char title[PATH_MAX_LENGTH] = {0};
|
char title[PATH_MAX_LENGTH] = {0};
|
||||||
@ -538,17 +538,17 @@ static void rmenu_xui_render(void)
|
|||||||
const char *label = NULL;
|
const char *label = NULL;
|
||||||
unsigned menu_type = 0;
|
unsigned menu_type = 0;
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
menu_display_t *disp = menu_display_get_ptr();
|
|
||||||
uint64_t frame_count = video_driver_get_frame_count();
|
uint64_t frame_count = video_driver_get_frame_count();
|
||||||
|
|
||||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||||
|
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
|
||||||
|
|
||||||
if (!menu)
|
if (!menu)
|
||||||
return;
|
return;
|
||||||
if (
|
if (
|
||||||
menu_entries_needs_refresh() &&
|
menu_entries_needs_refresh() &&
|
||||||
menu_driver_alive() &&
|
menu_driver_alive() &&
|
||||||
!disp->msg_force
|
!msg_force
|
||||||
)
|
)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
12
menu/menu.c
12
menu/menu.c
@ -87,14 +87,13 @@ static void menu_push_to_history_playlist(void)
|
|||||||
**/
|
**/
|
||||||
bool menu_load_content(enum rarch_core_type type)
|
bool menu_load_content(enum rarch_core_type type)
|
||||||
{
|
{
|
||||||
|
bool msg_force = true;
|
||||||
menu_handle_t *menu = menu_driver_get_ptr();
|
menu_handle_t *menu = menu_driver_get_ptr();
|
||||||
menu_display_t *disp = menu_display_get_ptr();
|
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
global_t *global = global_get_ptr();
|
global_t *global = global_get_ptr();
|
||||||
|
|
||||||
/* redraw menu frame */
|
/* redraw menu frame */
|
||||||
if (disp)
|
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
|
||||||
disp->msg_force = true;
|
|
||||||
|
|
||||||
menu_iterate(true, MENU_ACTION_NOOP);
|
menu_iterate(true, MENU_ACTION_NOOP);
|
||||||
menu_iterate_render();
|
menu_iterate_render();
|
||||||
@ -109,9 +108,6 @@ bool menu_load_content(enum rarch_core_type type)
|
|||||||
snprintf(msg, sizeof(msg), "Failed to load %s.\n", name);
|
snprintf(msg, sizeof(msg), "Failed to load %s.\n", name);
|
||||||
menu_display_msg_queue_push(msg, 1, 90, false);
|
menu_display_msg_queue_push(msg, 1, 90, false);
|
||||||
|
|
||||||
if (disp)
|
|
||||||
disp->msg_force = true;
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,9 +128,9 @@ int menu_common_load_content(
|
|||||||
const char *core_path, const char *fullpath,
|
const char *core_path, const char *fullpath,
|
||||||
bool persist, enum rarch_core_type type)
|
bool persist, enum rarch_core_type type)
|
||||||
{
|
{
|
||||||
|
bool msg_force = true;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
global_t *global = global_get_ptr();
|
global_t *global = global_get_ptr();
|
||||||
menu_display_t *disp = menu_display_get_ptr();
|
|
||||||
menu_list_t *menu_list = menu_list_get_ptr();
|
menu_list_t *menu_list = menu_list_get_ptr();
|
||||||
enum event_command cmd = EVENT_CMD_NONE;
|
enum event_command cmd = EVENT_CMD_NONE;
|
||||||
|
|
||||||
@ -171,7 +167,7 @@ int menu_common_load_content(
|
|||||||
event_command(cmd);
|
event_command(cmd);
|
||||||
|
|
||||||
menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS);
|
menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS);
|
||||||
disp->msg_force = true;
|
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
|
||||||
|
|
||||||
generic_action_ok_displaylist_push("",
|
generic_action_ok_displaylist_push("",
|
||||||
"", 0, 0, 0, ACTION_OK_DL_CONTENT_SETTINGS);
|
"", 0, 0, 0, ACTION_OK_DL_CONTENT_SETTINGS);
|
||||||
|
@ -310,6 +310,22 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
|||||||
frame_buf->pitch = *ptr;
|
frame_buf->pitch = *ptr;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
case MENU_DISPLAY_CTL_MSG_FORCE:
|
||||||
|
{
|
||||||
|
bool *ptr = (bool*)data;
|
||||||
|
if (!ptr)
|
||||||
|
return false;
|
||||||
|
*ptr = disp->msg_force;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case MENU_DISPLAY_CTL_SET_MSG_FORCE:
|
||||||
|
{
|
||||||
|
bool *ptr = (bool*)data;
|
||||||
|
if (!ptr)
|
||||||
|
return false;
|
||||||
|
disp->msg_force = *ptr;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
case MENU_DISPLAY_CTL_FONT_DATA_INIT:
|
case MENU_DISPLAY_CTL_FONT_DATA_INIT:
|
||||||
{
|
{
|
||||||
bool *ptr = (bool*)data;
|
bool *ptr = (bool*)data;
|
||||||
|
@ -51,7 +51,9 @@ enum menu_display_ctl_state
|
|||||||
MENU_DISPLAY_CTL_FONT_DATA_INIT,
|
MENU_DISPLAY_CTL_FONT_DATA_INIT,
|
||||||
MENU_DISPLAY_CTL_SET_FONT_DATA_INIT,
|
MENU_DISPLAY_CTL_SET_FONT_DATA_INIT,
|
||||||
MENU_DISPLAY_CTL_FONT_SIZE,
|
MENU_DISPLAY_CTL_FONT_SIZE,
|
||||||
MENU_DISPLAY_CTL_SET_FONT_SIZE
|
MENU_DISPLAY_CTL_SET_FONT_SIZE,
|
||||||
|
MENU_DISPLAY_CTL_MSG_FORCE,
|
||||||
|
MENU_DISPLAY_CTL_SET_MSG_FORCE
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct menu_display
|
typedef struct menu_display
|
||||||
|
Loading…
x
Reference in New Issue
Block a user