From 0a9787ec49668c0bb1121047df7ca070b25c2b7b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Feb 2016 23:26:33 +0100 Subject: [PATCH] Create GFX_CTL_INPUT_DRIVER --- gfx/d3d/d3d.cpp | 6 +++++- gfx/drivers/gl.c | 6 +++++- gfx/drivers/vg.c | 6 +++++- gfx/video_context_driver.c | 18 +++++++++--------- gfx/video_context_driver.h | 6 ++---- 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/gfx/d3d/d3d.cpp b/gfx/d3d/d3d.cpp index 07a4eee4e4..cfa31b8dcd 100644 --- a/gfx/d3d/d3d.cpp +++ b/gfx/d3d/d3d.cpp @@ -956,6 +956,7 @@ static bool d3d_construct(d3d_video_t *d3d, const video_info_t *info, const input_driver_t **input, void **input_data) { + gfx_ctx_input_t inp; unsigned full_x, full_y; settings_t *settings = config_get_ptr(); @@ -1045,7 +1046,10 @@ static bool d3d_construct(d3d_video_t *d3d, if (!d3d_initialize(d3d, &d3d->video_info)) return false; - gfx_ctx_input_driver(input, input_data); + inp.input = input; + inp.input_data = input_data; + + gfx_ctx_ctl(GFX_CTL_INPUT_DRIVER, &inp); RARCH_LOG("[D3D]: Init complete.\n"); return true; diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 4bf6d3c3f6..da264b171e 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -2462,6 +2462,7 @@ static void gl_begin_debug(gl_t *gl) static void *gl_init(const video_info_t *video, const input_driver_t **input, void **input_data) { + gfx_ctx_input_t inp; unsigned interval; unsigned win_width, win_height, temp_width = 0, temp_height = 0; bool force_smooth = false; @@ -2659,7 +2660,10 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo goto error; #endif - gfx_ctx_input_driver(input, input_data); + inp.input = input; + inp.input_data = input_data; + + gfx_ctx_ctl(GFX_CTL_INPUT_DRIVER, &inp); if (settings->video.font_enable) { diff --git a/gfx/drivers/vg.c b/gfx/drivers/vg.c index c1ca938b8f..fd2985138f 100644 --- a/gfx/drivers/vg.c +++ b/gfx/drivers/vg.c @@ -85,6 +85,7 @@ static INLINE bool vg_query_extension(const char *ext) static void *vg_init(const video_info_t *video, const input_driver_t **input, void **input_data) { + gfx_ctx_input_t inp; gfx_ctx_aspect_t aspect_data; unsigned interval; unsigned temp_width = 0, temp_height = 0; @@ -156,7 +157,10 @@ static void *vg_init(const video_info_t *video, const input_driver_t **input, vo video->smooth ? VG_IMAGE_QUALITY_BETTER : VG_IMAGE_QUALITY_NONANTIALIASED); vg_set_nonblock_state(vg, !video->vsync); - gfx_ctx_input_driver(input, input_data); + inp.input = input; + inp.input_data = input_data; + + gfx_ctx_ctl(GFX_CTL_INPUT_DRIVER, &inp); if (settings->video.font_enable && font_renderer_create_default(&vg->font_driver, &vg->mFontRenderer, *settings->video.font_path ? settings->video.font_path : NULL, settings->video.font_size)) diff --git a/gfx/video_context_driver.c b/gfx/video_context_driver.c index 5805a2cd83..731acade50 100644 --- a/gfx/video_context_driver.c +++ b/gfx/video_context_driver.c @@ -136,15 +136,6 @@ bool gfx_ctx_set_resize(unsigned width, unsigned height) video_context_data, width, height); } -void gfx_ctx_input_driver( - const input_driver_t **input, void **input_data) -{ - if (!current_video_context || !current_video_context->input_driver) - return; - current_video_context->input_driver( - video_context_data, input, input_data); -} - /** * find_gfx_ctx_driver_index: * @ident : Identifier of resampler driver to find. @@ -433,6 +424,15 @@ bool gfx_ctx_ctl(enum gfx_ctx_ctl_state state, void *data) metrics->type, metrics->value); } + case GFX_CTL_INPUT_DRIVER: + { + gfx_ctx_input_t *inp = (gfx_ctx_input_t*)data; + if (!current_video_context || !current_video_context->input_driver) + return false; + current_video_context->input_driver( + video_context_data, inp->input, inp->input_data); + } + break; case GFX_CTL_NONE: default: break; diff --git a/gfx/video_context_driver.h b/gfx/video_context_driver.h index 2648636611..1bd1f57e4b 100644 --- a/gfx/video_context_driver.h +++ b/gfx/video_context_driver.h @@ -75,7 +75,8 @@ enum gfx_ctx_ctl_state GFX_CTL_SWAP_INTERVAL, GFX_CTL_PROC_ADDRESS_GET, GFX_CTL_TRANSLATE_ASPECT, - GFX_CTL_GET_METRICS + GFX_CTL_GET_METRICS, + GFX_CTL_INPUT_DRIVER, }; typedef void (*gfx_ctx_proc_t)(void); @@ -270,9 +271,6 @@ bool gfx_ctx_set_resize(unsigned width, unsigned height); const char *gfx_ctx_get_ident(void); -void gfx_ctx_input_driver( - const input_driver_t **input, void **input_data); - bool gfx_ctx_ctl(enum gfx_ctx_ctl_state state, void *data); #ifdef __cplusplus