From 3139f13612db03ebf432cc3d2f16a9a9b661d099 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 15 Jun 2015 02:37:32 +0200 Subject: [PATCH] (Menu) Cleanups --- menu/cbs/menu_cbs_iterate.c | 4 +++- menu/cbs/menu_cbs_ok.c | 5 ++++- menu/drivers/glui.c | 13 +++++++------ menu/drivers/rgui.c | 9 +++++---- menu/drivers/rmenu.c | 3 ++- menu/drivers/rmenu_xui.cpp | 8 ++++++-- menu/menu.c | 12 +++++++----- menu/menu_display.h | 2 ++ menu/menu_driver.h | 1 - menu/menu_entry.c | 6 ++++-- 10 files changed, 40 insertions(+), 23 deletions(-) diff --git a/menu/cbs/menu_cbs_iterate.c b/menu/cbs/menu_cbs_iterate.c index 11b29747e5..90e4181701 100644 --- a/menu/cbs/menu_cbs_iterate.c +++ b/menu/cbs/menu_cbs_iterate.c @@ -285,6 +285,7 @@ static int action_iterate_menu_viewport(char *s, size_t len, const char *label, unsigned type = 0; video_viewport_t *custom = video_viewport_get_custom(); menu_handle_t *menu = menu_driver_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); settings_t *settings = config_get_ptr(); @@ -407,7 +408,8 @@ static int action_iterate_menu_viewport(char *s, size_t len, const char *label, break; case MENU_ACTION_MESSAGE: - menu->msg_force = true; + if (disp) + disp->msg_force = true; break; default: diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 3871f12d10..3981c62dd6 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -1113,6 +1113,7 @@ static int action_ok_config_load(const char *path, char config[PATH_MAX_LENGTH] = {0}; menu_navigation_t *nav = menu_navigation_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(); if (!menu || !menu_list) @@ -1122,7 +1123,9 @@ static int action_ok_config_load(const char *path, fill_pathname_join(config, menu_path, path, sizeof(config)); menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS); - menu->msg_force = true; + + disp->msg_force = true; + if (rarch_replace_config(config)) { menu_navigation_clear(nav, false); diff --git a/menu/drivers/glui.c b/menu/drivers/glui.c index 3ffd057d95..d95f0c02d8 100644 --- a/menu/drivers/glui.c +++ b/menu/drivers/glui.c @@ -369,10 +369,12 @@ static void glui_frame(void) glui = (glui_handle_t*)menu->userdata; - if (menu_needs_refresh() + if ( + menu_needs_refresh() && menu_driver_alive() - && !menu->msg_force - && !glui->box_message[0]) + && !disp->msg_force + && !glui->box_message[0] + ) return; video_driver_get_size(&width, &height); @@ -394,10 +396,9 @@ static void glui_frame(void) glui_render_quad(gl, 0, disp->header_height - menu->scroll_y + glui->line_height * - nav->selection_ptr, - width, glui->line_height, 1, 1, 1, 0.1); + nav->selection_ptr, width, glui->line_height, 1, 1, 1, 0.1); - anim->is_active = true; + anim->is_active = true; anim->label.is_updated = false; glui_render_quad(gl, 0, 0, width, diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index ae7e5c5e1d..f7c5a13289 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -347,12 +347,13 @@ static void rgui_render(void) char title_msg[64] = {0}; char timedate[PATH_MAX_LENGTH] = {0}; menu_handle_t *menu = menu_driver_get_ptr(); + menu_input_t *menu_input = menu_input_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); runloop_t *runloop = rarch_main_get_ptr(); driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); - menu_input_t *menu_input = menu_input_get_ptr(); menu_animation_t *anim = menu_animation_get_ptr(); uint64_t frame_count = video_driver_get_frame_count(); @@ -361,7 +362,7 @@ static void rgui_render(void) if (!menu) return; - if (menu_needs_refresh() && menu_driver_alive() && !menu->msg_force) + if (menu_needs_refresh() && menu_driver_alive() && !disp->msg_force) return; if (runloop->is_idle) @@ -493,10 +494,10 @@ static void rgui_render(void) #ifdef GEKKO const char *message_queue; - if (menu->msg_force) + if (disp->msg_force) { message_queue = rarch_main_msg_queue_pull(); - menu->msg_force = false; + disp->msg_force = false; } else message_queue = driver->current_msg; diff --git a/menu/drivers/rmenu.c b/menu/drivers/rmenu.c index 4dab535d1a..9b6d54ba37 100644 --- a/menu/drivers/rmenu.c +++ b/menu/drivers/rmenu.c @@ -128,6 +128,7 @@ static void rmenu_render(void) char title_buf[256] = {0}; char title_msg[64] = {0}; menu_handle_t *menu = menu_driver_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); menu_animation_t *anim = menu_animation_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); @@ -145,7 +146,7 @@ static void rmenu_render(void) } if (menu_needs_refresh() && menu_driver_alive() - && !menu->msg_force) + && !disp->msg_force) return; menu_display_fb_unset_dirty(); diff --git a/menu/drivers/rmenu_xui.cpp b/menu/drivers/rmenu_xui.cpp index fbb931de4b..0bab769fd2 100644 --- a/menu/drivers/rmenu_xui.cpp +++ b/menu/drivers/rmenu_xui.cpp @@ -537,14 +537,18 @@ static void rmenu_xui_render(void) const char *label = NULL; unsigned menu_type = 0; menu_handle_t *menu = menu_driver_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); menu_framebuf_t *frame_buf = menu_display_fb_get_ptr(); menu_navigation_t *nav = menu_navigation_get_ptr(); uint64_t frame_count = video_driver_get_frame_count(); if (!menu) return; - if (menu_needs_refresh() && - menu_driver_alive() && !menu->msg_force) + if ( + menu_needs_refresh() && + menu_driver_alive() && + !disp->msg_force + ) return; menu_display_fb_unset_dirty(); diff --git a/menu/menu.c b/menu/menu.c index 5c16891bbb..0d630009a4 100644 --- a/menu/menu.c +++ b/menu/menu.c @@ -90,12 +90,13 @@ static void menu_push_to_history_playlist(void) bool menu_load_content(void) { menu_handle_t *menu = menu_driver_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); /* redraw menu frame */ - if (menu) - menu->msg_force = true; + if (disp) + disp->msg_force = true; menu_entry_iterate(MENU_ACTION_NOOP); @@ -111,8 +112,8 @@ bool menu_load_content(void) snprintf(msg, sizeof(msg), "Failed to load %s.\n", name); rarch_main_msg_queue_push(msg, 1, 90, false); - if (menu) - menu->msg_force = true; + if (disp) + disp->msg_force = true; return false; } @@ -132,6 +133,7 @@ bool menu_load_content(void) void menu_common_load_content(bool persist) { + menu_display_t *disp = menu_display_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); if (!menu || !menu_list) @@ -140,7 +142,7 @@ void menu_common_load_content(bool persist) event_command(persist ? EVENT_CMD_LOAD_CONTENT_PERSIST : EVENT_CMD_LOAD_CONTENT); menu_list_flush_stack(menu_list, NULL, MENU_SETTINGS); - menu->msg_force = true; + disp->msg_force = true; } /** diff --git a/menu/menu_display.h b/menu/menu_display.h index b1874ccff5..78f1f24165 100644 --- a/menu/menu_display.h +++ b/menu/menu_display.h @@ -39,6 +39,8 @@ typedef struct menu_framebuf typedef struct menu_display { + bool msg_force; + menu_framebuf_t frame_buf; struct diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 35287e353c..b79bfc703c 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -59,7 +59,6 @@ typedef struct bool need_refresh; bool nonblocking_refresh; - bool msg_force; bool push_start_screen; bool defer_core; diff --git a/menu/menu_entry.c b/menu/menu_entry.c index e343fe73d1..2975661563 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -432,8 +432,9 @@ int menu_entry_iterate(unsigned action) int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) { int ret = 0; - menu_navigation_t *nav = menu_navigation_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); + menu_navigation_t *nav = menu_navigation_get_ptr(); + menu_display_t *disp = menu_display_get_ptr(); menu_list_t *menu_list = menu_list_get_ptr(); menu_file_list_cbs_t *cbs = menu_list_get_actiondata_at_offset(menu_list->selection_buf, i); @@ -493,7 +494,8 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) break; case MENU_ACTION_MESSAGE: - menu->msg_force = true; + if (disp) + disp->msg_force = true; break; case MENU_ACTION_SEARCH: