From 6e8e22a458eaafa10af381133eb5edcf16cbb6ae Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 25 Feb 2014 19:05:46 +0100 Subject: [PATCH] (RMenu) Refactor rmenu --- frontend/menu/disp/rmenu.c | 48 +++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/frontend/menu/disp/rmenu.c b/frontend/menu/disp/rmenu.c index e03a44d6f4..3e4e1f7e12 100644 --- a/frontend/menu/disp/rmenu.c +++ b/frontend/menu/disp/rmenu.c @@ -112,7 +112,6 @@ static void rmenu_render_messagebox(void *data, const char *message) } render_normal = false; - } @@ -123,6 +122,19 @@ static void rmenu_render(void *data) render_normal = true; return; } + + if (!menu_texture && !menu_texture_inited) + { + if (g_extern.video_active && driver.video_data) + { + menu_texture = (struct texture_image*)calloc(1, sizeof(*menu_texture)); + texture_image_load(g_extern.menu_texture_path, menu_texture); + rgui->width = menu_texture->width; + rgui->height = menu_texture->height; + rmenu_set_texture(rgui, true); + } + return; + } rgui_handle_t *rgui = (rgui_handle_t*)data; font_params_t font_parms; @@ -397,39 +409,23 @@ void rmenu_set_texture(void *data, bool enable) } } -static void rmenu_init_assets(void *data) -{ - rgui_handle_t *rgui = (rgui_handle_t*)data; - - if (!rgui) - return; - - menu_texture = (struct texture_image*)calloc(1, sizeof(*menu_texture)); - texture_image_load(g_extern.menu_texture_path, menu_texture); - rgui->width = menu_texture->width; - rgui->height = menu_texture->height; - - rmenu_set_texture(rgui, true); -} - static void *rmenu_init(void) { rgui_handle_t *rgui = (rgui_handle_t*)calloc(1, sizeof(*rgui)); - rmenu_init_assets(rgui); + if (!rgui) + return NULL; return rgui; } -static void rmenu_free_assets(void *data) -{ - texture_image_free(menu_texture); - menu_texture_inited = false; -} - static void rmenu_free(void *data) { - rmenu_free_assets(data); + if (menu_texture) + { + texture_image_free(menu_texture); + menu_texture_inited = false; + } } int rgui_input_postprocess(void *data, uint64_t old_state) @@ -449,15 +445,13 @@ int rgui_input_postprocess(void *data, uint64_t old_state) return ret; } - const menu_ctx_driver_t menu_ctx_rmenu = { rmenu_set_texture, rmenu_render_messagebox, rmenu_render, rmenu_init, rmenu_free, - rmenu_init_assets, - rmenu_free_assets, + NULL, NULL, NULL, "rmenu",