diff --git a/gfx/d3d/d3d.cpp b/gfx/d3d/d3d.cpp index 9586a654b9..96e0c4779b 100644 --- a/gfx/d3d/d3d.cpp +++ b/gfx/d3d/d3d.cpp @@ -1735,9 +1735,8 @@ static bool d3d_frame(void *data, const void *frame, #endif #ifdef HAVE_MENU - if (runloop->is_menu - && driver->menu_ctx && driver->menu_ctx->frame) - driver->menu_ctx->frame(); + if (runloop->is_menu) + menu_driver_frame(); #ifdef _XBOX /* TODO - should be refactored. */ diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index c380714786..460c4652f1 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1603,15 +1603,11 @@ static bool gl_frame(void *data, const void *frame, gl_set_prev_texture(gl, &gl->tex_info); #if defined(HAVE_MENU) - { - driver_t *driver = driver_get_ptr(); - if (runloop->is_menu - && driver->menu_ctx && driver->menu_ctx->frame) - driver->menu_ctx->frame(); + if (runloop->is_menu) + menu_driver_frame(); - if (gl->menu_texture_enable) - gl_draw_texture(gl); - } + if (gl->menu_texture_enable) + gl_draw_texture(gl); #endif if (msg && gl->font_driver && gl->font_handle) diff --git a/gfx/drivers/sdl2_gfx.c b/gfx/drivers/sdl2_gfx.c index 8a006854dd..8833a3158a 100644 --- a/gfx/drivers/sdl2_gfx.c +++ b/gfx/drivers/sdl2_gfx.c @@ -511,9 +511,8 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width, SDL_RenderCopyEx(vid->renderer, vid->frame.tex, NULL, NULL, vid->rotation, NULL, SDL_FLIP_NONE); #ifdef HAVE_MENU - if (runloop->is_menu - && driver->menu_ctx && driver->menu_ctx->frame) - driver->menu_ctx->frame(); + if (runloop->is_menu) + menu_driver_frame(); #endif if (vid->menu.active) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index a0156707f0..0861bf4913 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -245,3 +245,13 @@ void menu_driver_context_reset(void) if (driver->menu_ctx && driver->menu_ctx->context_reset) driver->menu_ctx->context_reset(); } + +void menu_driver_frame(void) +{ + driver_t *driver = driver_get_ptr(); + if (!driver) + return; + + if (driver->menu_ctx && driver->menu_ctx->frame) + driver->menu_ctx->frame(); +} diff --git a/menu/menu_driver.h b/menu/menu_driver.h index b8445b73cf..6d528b2d57 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -300,6 +300,8 @@ void menu_driver_navigation_set_last(void); void menu_driver_set_texture(void); +void menu_driver_frame(void); + void menu_driver_context_reset(void); #ifdef __cplusplus