diff --git a/driver.h b/driver.h index c986adbfe2..9ce2cd7ae6 100644 --- a/driver.h +++ b/driver.h @@ -485,6 +485,7 @@ typedef struct menu_ctx_driver void (*set_texture)(void*, bool); void (*render_messagebox)(void*, const char*); void (*render)(void*); + void (*frame)(void*); void* (*init)(void); void (*free)(void*); void (*init_assets)(void*); diff --git a/frontend/menu/disp/lakka.c b/frontend/menu/disp/lakka.c index 9e6d799b07..6549febf62 100644 --- a/frontend/menu/disp/lakka.c +++ b/frontend/menu/disp/lakka.c @@ -716,6 +716,7 @@ const menu_ctx_driver_t menu_ctx_lakka = { lakka_set_texture, lakka_render_messagebox, lakka_render, + NULL, lakka_init, lakka_free, lakka_init_assets, diff --git a/frontend/menu/disp/rgui.c b/frontend/menu/disp/rgui.c index b0656be13b..3ff18354c5 100644 --- a/frontend/menu/disp/rgui.c +++ b/frontend/menu/disp/rgui.c @@ -604,6 +604,7 @@ const menu_ctx_driver_t menu_ctx_rgui = { rgui_set_texture, rgui_render_messagebox, rgui_render, + NULL, rgui_init, rgui_free, NULL, diff --git a/frontend/menu/disp/rmenu.c b/frontend/menu/disp/rmenu.c index a2db22a68d..feb43ad55c 100644 --- a/frontend/menu/disp/rmenu.c +++ b/frontend/menu/disp/rmenu.c @@ -465,6 +465,7 @@ const menu_ctx_driver_t menu_ctx_rmenu = { rmenu_set_texture, rmenu_render_messagebox, rmenu_render, + NULL, rmenu_init, rmenu_free, rmenu_init_assets, diff --git a/frontend/menu/disp/rmenu_xui.cpp b/frontend/menu/disp/rmenu_xui.cpp index ba50511063..415998ea8e 100644 --- a/frontend/menu/disp/rmenu_xui.cpp +++ b/frontend/menu/disp/rmenu_xui.cpp @@ -288,9 +288,9 @@ static void xui_render_message(const char *msg) } } -bool menu_iterate_xui(void) +static void rmenu_xui_render(void *data) { - d3d_video_t *d3d = (d3d_video_t*)driver.video_data; + d3d_video_t *d3d = (d3d_video_t*)data; LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev; D3DVIEWPORT vp_full; @@ -652,6 +652,7 @@ const menu_ctx_driver_t menu_ctx_rmenu_xui = { NULL, rmenu_xui_render_messagebox, rmenu_xui_render, + rmenu_xui_frame, rmenu_xui_init, rmenu_xui_free, NULL, diff --git a/xdk/xdk_d3d.cpp b/xdk/xdk_d3d.cpp index e3ab5998c5..6f0d24bbc7 100644 --- a/xdk/xdk_d3d.cpp +++ b/xdk/xdk_d3d.cpp @@ -579,10 +579,6 @@ static bool texture_image_render(void *data, struct texture_image *out_img, #ifdef HAVE_MENU -#ifdef HAVE_RMENU_XUI -extern bool menu_iterate_xui(void); -#endif - static void d3d_draw_texture(void *data) { d3d_video_t *d3d = (d3d_video_t*)data; @@ -779,10 +775,8 @@ static bool d3d_frame(void *data, const void *frame, render_pass(d3d, frame, width, height, pitch, d3d->dev_rotation); #ifdef HAVE_MENU -#ifdef HAVE_RMENU_XUI - if (g_extern.lifecycle_state & (1ULL << MODE_MENU)) - menu_iterate_xui(); -#endif + if (g_extern.lifecycle_state & (1ULL << MODE_MENU) && driver.menu_ctx && driver.menu_ctx->frame) + driver.menu_ctx->frame(d3d); if (d3d && d3d->rgui_texture_enable) d3d_draw_texture(d3d);