From eb82bd2127429aea23f63b0910223b7ec5e73a9f Mon Sep 17 00:00:00 2001 From: ToadKing Date: Sun, 10 Mar 2013 16:02:10 -0400 Subject: [PATCH] implement driver.current_msg fix RGUI to no longer use driver.video_data casting --- driver.h | 3 +++ frontend/menu/rgui.c | 22 +++++++--------------- gx/gx_video.c | 4 ---- gx/gx_video.h | 1 - retroarch.c | 1 + 5 files changed, 11 insertions(+), 20 deletions(-) diff --git a/driver.h b/driver.h index 84d4accdcd..bf09b47c08 100644 --- a/driver.h +++ b/driver.h @@ -337,6 +337,9 @@ typedef struct driver // Interface for "poking". const video_poke_interface_t *video_poke; + + // last message given to the video driver + const char *current_msg; } driver_t; void init_drivers(void); diff --git a/frontend/menu/rgui.c b/frontend/menu/rgui.c index 73da8dc0c4..f1d38a7e1f 100644 --- a/frontend/menu/rgui.c +++ b/frontend/menu/rgui.c @@ -37,14 +37,6 @@ #define TERM_WIDTH (((RGUI_WIDTH - TERM_START_X - 15) / (FONT_WIDTH_STRIDE))) #define TERM_HEIGHT (((RGUI_HEIGHT - TERM_START_Y - 15) / (FONT_HEIGHT_STRIDE)) - 1) -#if defined(HAVE_OPENGL) -#define DECLARE_DEVICE_PTR() gl_t *device_ptr = (gl_t*)driver.video_data -#elif defined(GEKKO) -#define DECLARE_DEVICE_PTR() gx_video_t *device_ptr = (gx_video_t*)driver.video_data -#elif defined(HAVE_D3D8) || defined(HAVE_D3D9) -#define DECLARE_DEVICE_PTR() xdk_d3d_video_t *device_ptr = (xdk_d3d_video_t*)driver.video_data -#endif - #ifdef GEKKO enum { @@ -586,7 +578,6 @@ static void render_text(rgui_handle_t *rgui) #ifdef GEKKO const char *message_queue; - DECLARE_DEVICE_PTR(); if (rgui->msg_force) { @@ -595,7 +586,7 @@ static void render_text(rgui_handle_t *rgui) } else { - message_queue = device_ptr->msg; + message_queue = driver.current_msg; } render_messagebox(rgui, message_queue); #endif @@ -1042,9 +1033,10 @@ static void rgui_settings_controller_populate_entries(rgui_handle_t *rgui) static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) { -#ifdef GEKKO - DECLARE_DEVICE_PTR(); -#endif + rarch_viewport_t vp; + driver.video->viewport_info(driver.video_data, &vp); + unsigned win_width = vp.full_width; + unsigned win_height = vp.full_height; unsigned menu_type = 0; rgui_list_back(rgui->path_stack, NULL, &menu_type, NULL); @@ -1133,8 +1125,8 @@ static int rgui_viewport_iterate(rgui_handle_t *rgui, rgui_action_t action) } else { - g_extern.console.screen.viewports.custom_vp.width = device_ptr->win_width - g_extern.console.screen.viewports.custom_vp.x; - g_extern.console.screen.viewports.custom_vp.height = device_ptr->win_height - g_extern.console.screen.viewports.custom_vp.y; + g_extern.console.screen.viewports.custom_vp.width = win_width - g_extern.console.screen.viewports.custom_vp.x; + g_extern.console.screen.viewports.custom_vp.height = win_height - g_extern.console.screen.viewports.custom_vp.y; } #endif if (driver.video_poke->apply_state_changes) diff --git a/gx/gx_video.c b/gx/gx_video.c index e2da6e7990..677af60ab6 100644 --- a/gx/gx_video.c +++ b/gx/gx_video.c @@ -976,10 +976,6 @@ static bool gx_frame(void *data, const void *frame, gx_blit_line(x, y, msg); clear_efb = GX_TRUE; } - else if (msg) - snprintf(gx->msg, sizeof(gx->msg), "%s", msg); - else - gx->msg[0] = 0; GX_CopyDisp(g_framebuf[g_current_framebuf], clear_efb); GX_Flush(); diff --git a/gx/gx_video.h b/gx/gx_video.h index 512bff3d48..b541148119 100644 --- a/gx/gx_video.h +++ b/gx/gx_video.h @@ -27,7 +27,6 @@ typedef struct gx_video uint32_t *menu_data; // FIXME: Should be const uint16_t*. rarch_viewport_t vp; unsigned scale; - char msg[128]; } gx_video_t; void gx_set_video_mode(unsigned fbWidth, unsigned lines); diff --git a/retroarch.c b/retroarch.c index 4d864da5aa..7475b533cc 100644 --- a/retroarch.c +++ b/retroarch.c @@ -281,6 +281,7 @@ static void video_frame(const void *data, unsigned width, unsigned height, size_ #endif const char *msg = msg_queue_pull(g_extern.msg_queue); + driver.current_msg = msg; #ifdef HAVE_DYLIB if (g_extern.filter.active && data)