From 823be1ce4114ddfa15676ae1c8edac182061aabf Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 15 Aug 2014 20:51:59 +0200 Subject: [PATCH] Get rid of more driver_funcs macros --- command.c | 2 +- driver.c | 6 ++--- driver_funcs.h | 10 --------- dynamic.c | 2 +- frontend/frontend.c | 5 +++-- frontend/menu/backend/menu_common_backend.c | 5 +++-- frontend/menu/menu_common.c | 2 +- input/input_common.c | 4 ++-- input/overlay.c | 3 ++- input/x11_input.c | 8 ++++--- retroarch.c | 25 ++++++++++++--------- settings_data.c | 8 ++++--- 12 files changed, 41 insertions(+), 39 deletions(-) diff --git a/command.c b/command.c index ceee85d1a9..a102375a6f 100644 --- a/command.c +++ b/command.c @@ -234,7 +234,7 @@ static bool cmd_set_shader(const char *arg) msg_queue_push(g_extern.msg_queue, msg, 1, 120); RARCH_LOG("Applying shader \"%s\".\n", arg); - return video_set_shader_func(type, arg); + return driver.video->set_shader(driver.video_data, type, arg); } static const struct cmd_action_map action_map[] = { diff --git a/driver.c b/driver.c index 64766c25b0..4a320787cb 100644 --- a/driver.c +++ b/driver.c @@ -821,7 +821,7 @@ static void adjust_system_rates(void) if (driver.video_data) { if (g_extern.system.force_nonblock) - video_set_nonblock_state_func(true); + driver.video->set_nonblock_state(driver.video_data, true); else driver_set_nonblock_state(driver.nonblock_state); } @@ -850,7 +850,7 @@ void driver_set_nonblock_state(bool nonblock) bool video_nb = nonblock; if (!g_settings.video.vsync || g_extern.system.force_nonblock) video_nb = true; - video_set_nonblock_state_func(video_nb); + driver.video->set_nonblock_state(driver.video_data, video_nb); } if (g_extern.audio_active && driver.audio_data) @@ -1525,7 +1525,7 @@ void init_video_input(void) } if (driver.video->set_rotation) - video_set_rotation_func((g_settings.video.rotation + g_extern.system.rotation) % 4); + driver.video->set_rotation(driver.video_data, (g_settings.video.rotation + g_extern.system.rotation) % 4); #ifdef HAVE_X11 if (driver.display_type == RARCH_DISPLAY_X11) diff --git a/driver_funcs.h b/driver_funcs.h index 38ff58d3f6..6f53e93b34 100644 --- a/driver_funcs.h +++ b/driver_funcs.h @@ -18,16 +18,6 @@ #ifndef _RARCH_DRIVER_FUNCS_H #define _RARCH_DRIVER_FUNCS_H -#define video_set_nonblock_state_func(state) driver.video->set_nonblock_state(driver.video_data, state) -#define video_alive_func() driver.video->alive(driver.video_data) -#define video_focus_func() driver.video->focus(driver.video_data) -#define video_set_shader_func(type, path) driver.video->set_shader(driver.video_data, type, path) -#define video_set_rotation_func(rotate) driver.video->set_rotation(driver.video_data, rotate) -#define video_set_aspect_ratio_func(aspect_idx) driver.video->set_aspect_ratio(driver.video_data, aspect_idx) -#define video_viewport_info_func(info) driver.video->viewport_info(driver.video_data, info) -#define video_read_viewport_func(buffer) driver.video->read_viewport(driver.video_data, buffer) -#define video_overlay_interface_func(iface) driver.video->overlay_interface(driver.video_data, iface) - static inline bool input_key_pressed_func(int key) { bool ret = false; diff --git a/dynamic.c b/dynamic.c index 6568b47e0f..cd2db39724 100644 --- a/dynamic.c +++ b/dynamic.c @@ -554,7 +554,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) if (driver.video && driver.video->set_rotation) { if (driver.video_data) - video_set_rotation_func(rotation); + driver.video->set_rotation(driver.video_data, rotation); } else return false; diff --git a/frontend/frontend.c b/frontend/frontend.c index 51724aacab..003ef522cd 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -132,7 +132,8 @@ static int main_entry_iterate_menu_preinit(args_type() args) return 1; // Menu should always run with vsync on. - video_set_nonblock_state_func(false); + driver.video->set_nonblock_state(driver.video_data, false); + // Stop all rumbling when entering the menu. for (i = 0; i < MAX_PLAYERS; i++) { @@ -174,7 +175,7 @@ static int main_entry_iterate_menu(args_type() args) g_extern.lifecycle_state |= (1ULL << MODE_CLEAR_INPUT); // If QUIT state came from command interface, we'll only see it once due to MODE_CLEAR_INPUT. - if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) + if (input_key_pressed_func(RARCH_QUIT_KEY) || !driver.video->alive(driver.video_data)) return 1; } diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index ab35c530a4..6b070626dd 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -2725,7 +2725,7 @@ static void menu_common_shader_manager_set_preset(struct gfx_shader *shader, uns #ifdef HAVE_SHADER_MANAGER RARCH_LOG("Setting Menu shader: %s.\n", cgp_path ? cgp_path : "N/A (stock)"); - if (driver.video->set_shader && video_set_shader_func((enum rarch_shader_type)type, cgp_path)) + if (driver.video->set_shader && driver.video->set_shader(driver.video_data, (enum rarch_shader_type)type, cgp_path)) { // Makes sure that we use Menu CGP shader on driver reinit. // Only do this when the cgp actually works to avoid potential errors. @@ -3946,8 +3946,9 @@ static int menu_common_setting_set(unsigned id, unsigned action, rarch_setting_t if (driver_monitor_fps_statistics(&refresh_rate, &deviation, &sample_points)) { driver_set_monitor_refresh_rate(refresh_rate); + // Incase refresh rate update forced non-block video. - video_set_nonblock_state_func(false); + driver.video->set_nonblock_state(driver.video_data, false); } break; } diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 42d4a99089..94a80e3090 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -390,7 +390,7 @@ bool menu_iterate(void) #endif rarch_check_fullscreen(); - if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) + if (input_key_pressed_func(RARCH_QUIT_KEY) || !driver.video->alive(driver.video_data)) { g_extern.lifecycle_state |= (1ULL << MODE_GAME); return false; diff --git a/input/input_common.c b/input/input_common.c index ad76b59838..9b8200a103 100644 --- a/input/input_common.c +++ b/input/input_common.c @@ -254,8 +254,8 @@ bool input_translate_coord_viewport(int mouse_x, int mouse_y, int16_t *res_x, int16_t *res_y, int16_t *res_screen_x, int16_t *res_screen_y) { struct rarch_viewport vp = {0}; - if (driver.video->viewport_info) - video_viewport_info_func(&vp); + if (driver.video && driver.video->viewport_info) + driver.video->viewport_info(driver.video_data, &vp); else return false; diff --git a/input/overlay.c b/input/overlay.c index ac49e06bad..70efffdd75 100644 --- a/input/overlay.c +++ b/input/overlay.c @@ -592,7 +592,8 @@ input_overlay_t *input_overlay_new(const char *overlay) goto error; } - video_overlay_interface_func(&ol->iface); + if (driver.video && driver.video->overlay_interface) + driver.video->overlay_interface(driver.video_data, &ol->iface); ol->iface_data = driver.video_data; if (!ol->iface) diff --git a/input/x11_input.c b/input/x11_input.c index 998073660f..143a135406 100644 --- a/input/x11_input.c +++ b/input/x11_input.c @@ -255,10 +255,12 @@ static void x_input_poll_mouse(x11_input_t *x11) x11->mouse_wd = mask & Button5Mask; // Somewhat hacky, but seem to do the job. - if (x11->grab_mouse && video_focus_func()) + if (x11->grab_mouse && driver.video->focus(driver.video_data)) { struct rarch_viewport vp = {0}; - video_viewport_info_func(&vp); + + if (driver.video && driver.video->viewport_info) + driver.video->viewport_info(driver.video_data, &vp); int mid_w = vp.full_width >> 1; int mid_h = vp.full_height >> 1; @@ -277,7 +279,7 @@ static void x_input_poll(void *data) { x11_input_t *x11 = (x11_input_t*)data; - if (video_focus_func()) + if (driver.video->focus(driver.video_data)) XQueryKeymap(x11->display, x11->state); else memset(x11->state, 0, sizeof(x11->state)); diff --git a/retroarch.c b/retroarch.c index 595aeec329..d29dffdb97 100644 --- a/retroarch.c +++ b/retroarch.c @@ -86,7 +86,8 @@ static bool take_screenshot_viewport(void) bool retval = false; struct rarch_viewport vp = {0}; - video_viewport_info_func(&vp); + if (driver.video && driver.video->viewport_info) + driver.video->viewport_info(driver.video_data, &vp); if (!vp.width || !vp.height) return false; @@ -94,8 +95,9 @@ static bool take_screenshot_viewport(void) if (!(buffer = (uint8_t*)malloc(vp.width * vp.height * 3))) return false; - if (!video_read_viewport_func(buffer)) - goto done; + if (driver.video && driver.video->read_viewport) + if (!driver.video->read_viewport(driver.video_data, buffer)) + goto done; screenshot_dir = g_settings.screenshot_directory; @@ -253,7 +255,8 @@ static void init_recording(void) if (g_settings.video.gpu_record && driver.video->read_viewport) { struct rarch_viewport vp = {0}; - video_viewport_info_func(&vp); + if (driver.video && driver.video->viewport_info) + driver.video->viewport_info(driver.video_data, &vp); if (!vp.width || !vp.height) { @@ -357,7 +360,8 @@ static void recording_dump_frame(const void *data, unsigned width, unsigned heig { struct rarch_viewport vp = {0}; - video_viewport_info_func(&vp); + if (driver.video && driver.video->viewport_info) + driver.video->viewport_info(driver.video_data, &vp); if (!vp.width || !vp.height) { @@ -384,8 +388,9 @@ static void recording_dump_frame(const void *data, unsigned width, unsigned heig // Big bottleneck. // Since we might need to do read-backs asynchronously, it might take 3-4 times // before this returns true ... - if (!video_read_viewport_func(g_extern.record_gpu_buffer)) - return; + if (driver.video && driver.video->read_viewport) + if (!driver.video->read_viewport(driver.video_data, g_extern.record_gpu_buffer)) + return; ffemu_data.pitch = g_extern.record_gpu_width * 3; ffemu_data.width = g_extern.record_gpu_width; @@ -2267,7 +2272,7 @@ static void check_pause(void) new_state |= !g_extern.is_paused && input_key_pressed_func(RARCH_FRAMEADVANCE); if (g_settings.pause_nonactive) - focus = video_focus_func(); + focus = driver.video->focus(driver.video_data); if (focus && new_state && !old_state) { @@ -2408,7 +2413,7 @@ static void check_shader_dir(void) msg_queue_push(g_extern.msg_queue, msg, 1, 120); RARCH_LOG("Applying shader \"%s\".\n", shader); - if (!video_set_shader_func(type, shader)) + if (!driver.video->set_shader(driver.video_data, type, shader)) RARCH_WARN("Failed to apply shader.\n"); } @@ -3231,7 +3236,7 @@ bool rarch_main_iterate(void) return false; // Time to drop? - if (input_key_pressed_func(RARCH_QUIT_KEY) || !video_alive_func()) + if (input_key_pressed_func(RARCH_QUIT_KEY) || !driver.video->alive(driver.video_data)) return false; if (check_enter_menu()) diff --git a/settings_data.c b/settings_data.c index 398f0e0c18..5b37159d6e 100644 --- a/settings_data.c +++ b/settings_data.c @@ -1090,7 +1090,8 @@ static void general_write_handler(const void *data) else if (!strcmp(setting->name, "video_rotation")) { g_settings.video.rotation = *setting->value.unsigned_integer; - video_set_rotation_func((g_settings.video.rotation + g_extern.system.rotation) % 4); + if (driver.video && driver.video->set_rotation) + driver.video->set_rotation(driver.video_data, (g_settings.video.rotation + g_extern.system.rotation) % 4); } else if (!strcmp(setting->name, "video_threaded")) { @@ -1101,7 +1102,7 @@ static void general_write_handler(const void *data) { g_settings.video.swap_interval = *setting->value.unsigned_integer; if (driver.video && driver.video_data) - video_set_nonblock_state_func(false); + driver.video->set_nonblock_state(driver.video_data, false); } else if (!strcmp(setting->name, "video_crop_overscan")) g_settings.video.crop_overscan = *setting->value.boolean; @@ -1227,8 +1228,9 @@ static void general_write_handler(const void *data) if (driver.video && driver.video_data) { driver_set_monitor_refresh_rate(*setting->value.fraction); + /* In case refresh rate update forced non-block video. */ - video_set_nonblock_state_func(false); + driver.video->set_nonblock_state(driver.video_data, false); } } else if (!strcmp(setting->name, "video_aspect_ratio"))