Create MENU_DISPLAY_CTL_SET_STUB_DRAW_FRAME/MENU_DISPLAY_CTL_UNSET_STUB_DRAW_FRAME

This commit is contained in:
twinaphex 2015-12-07 20:57:24 +01:00
parent 5ec501f934
commit faad85e596
2 changed files with 22 additions and 4 deletions

View File

@ -256,12 +256,25 @@ bool menu_display_init_main_font(void *data,
bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
{
unsigned width, height;
static menu_display_draw_t draw_bak = NULL;
static menu_display_draw_bg_t draw_bg_bak = NULL;
menu_framebuf_t *frame_buf = menu_display_fb_get_ptr();
menu_display_t *disp = menu_display_get_ptr();
menu_display_ctx_driver_t *menu_disp = menu_display_context_get_ptr();
settings_t *settings = config_get_ptr();
switch (state)
{
case MENU_DISPLAY_CTL_SET_STUB_DRAW_FRAME:
draw_bak = menu_disp->draw;
draw_bg_bak = menu_disp->draw_bg;
menu_disp->draw = menu_display_ctx_null.draw;
menu_disp->draw_bg = menu_display_ctx_null.draw_bg;
break;
case MENU_DISPLAY_CTL_UNSET_STUB_DRAW_FRAME:
menu_disp->draw = draw_bak;
menu_disp->draw_bg = draw_bg_bak;
break;
case MENU_DISPLAY_CTL_FONT_BUF:
{
void **ptr = (void**)data;

View File

@ -50,6 +50,8 @@ enum menu_display_ctl_state
MENU_DISPLAY_CTL_SET_FB_PITCH,
MENU_DISPLAY_CTL_LIBRETRO,
MENU_DISPLAY_CTL_LIBRETRO_RUNNING,
MENU_DISPLAY_CTL_SET_STUB_DRAW_FRAME,
MENU_DISPLAY_CTL_UNSET_STUB_DRAW_FRAME,
MENU_DISPLAY_CTL_FONT_DATA_INIT,
MENU_DISPLAY_CTL_SET_FONT_DATA_INIT,
MENU_DISPLAY_CTL_FONT_SIZE,
@ -76,16 +78,14 @@ enum menu_display_driver_type
MENU_VIDEO_DRIVER_DIRECT3D
};
typedef struct menu_display_ctx_driver
{
void (*draw)(float x, float y,
typedef void (*menu_display_draw_t)(float x, float y,
unsigned width, unsigned height,
struct gfx_coords *coords,
void *matrix_data,
uintptr_t texture,
enum menu_display_prim_type prim_type
);
void (*draw_bg)(
typedef void (*menu_display_draw_bg_t)(
unsigned width, unsigned height,
uintptr_t texture,
float handle_alpha,
@ -97,6 +97,11 @@ typedef struct menu_display_ctx_driver
size_t vertex_count,
enum menu_display_prim_type prim_type
);
typedef struct menu_display_ctx_driver
{
menu_display_draw_t draw;
menu_display_draw_bg_t draw_bg;
void (*blend_begin)(void);
void (*blend_end)(void);
void (*restore_clear_color)(void);