diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 09333c20a2..8ace002844 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -101,8 +101,8 @@ static retro_time_t video_driver_frame_time_samples[MEASURE_FRAME_TIME_SAMPLES_C static uint64_t video_driver_frame_time_count = 0; static uint64_t video_driver_frame_count = 0; -static void *video_driver_data = NULL; -static video_driver_t *current_video = NULL; +void *video_driver_data = NULL; +video_driver_t *current_video = NULL; /* Interface for "poking". */ static const video_poke_interface_t *video_driver_poke = NULL; @@ -1668,40 +1668,11 @@ void video_driver_apply_state_changes(void) bool video_driver_read_viewport(uint8_t *buffer) { - if (!current_video->read_viewport) - return false; - if (!current_video->read_viewport(video_driver_data, buffer)) - return false; + if ( current_video->read_viewport + && current_video->read_viewport(video_driver_data, buffer)) + return true; - return true; -} - -bool video_driver_cached_frame_has_valid_framebuffer(void) -{ - if (!frame_cache_data) - return false; - return frame_cache_data == RETRO_HW_FRAME_BUFFER_VALID; -} - -bool video_driver_is_alive(void) -{ - if (current_video) - return current_video->alive(video_driver_data); - return true; -} - -bool video_driver_is_focused(void) -{ - return current_video->focus(video_driver_data); -} - -bool video_driver_has_windowed(void) -{ -#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE) return false; -#else - return current_video->has_windowed(video_driver_data); -#endif } uint64_t *video_driver_get_frame_count_ptr(void) @@ -1902,29 +1873,26 @@ void video_driver_gpu_record_deinit(void) bool video_driver_get_current_software_framebuffer(struct retro_framebuffer *fb) { if ( - !video_driver_poke || - !video_driver_poke->get_current_software_framebuffer) - return false; - if (!video_driver_poke->get_current_software_framebuffer( + video_driver_poke + && video_driver_poke->get_current_software_framebuffer + && video_driver_poke->get_current_software_framebuffer( video_driver_data, fb)) - return false; + return true; - return true; + return false; } bool video_driver_get_hw_render_interface( const struct retro_hw_render_interface **iface) { if ( - !video_driver_poke || - !video_driver_poke->get_hw_render_interface) - return false; - - if (!video_driver_poke->get_hw_render_interface( + video_driver_poke + && video_driver_poke->get_hw_render_interface + && video_driver_poke->get_hw_render_interface( video_driver_data, iface)) - return false; + return true; - return true; + return false; } bool video_driver_get_viewport_info(struct video_viewport *viewport) diff --git a/gfx/video_driver.h b/gfx/video_driver.h index dcc756d926..3c014e8188 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -213,6 +213,18 @@ struct aspect_ratio_elem extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END]; +#define video_driver_is_alive() ((current_video) ? current_video->alive(video_driver_data) : true) + +#define video_driver_is_focused() (current_video->focus(video_driver_data)) + +#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE) +#define video_driver_has_windowed() (false) +#else +#define video_driver_has_windowed() (current_video->has_windowed(video_driver_data)) +#endif + +#define video_driver_cached_frame_has_valid_framebuffer() (frame_cache_data ? (frame_cache_data == RETRO_HW_FRAME_BUFFER_VALID) : false) + void video_driver_destroy(void); void video_driver_set_cached_frame_ptr(const void *data); void video_driver_set_stub_frame(void); @@ -240,11 +252,7 @@ void video_driver_set_nonblock_state(bool toggle); bool video_driver_find_driver(void); void video_driver_apply_state_changes(void); bool video_driver_read_viewport(uint8_t *buffer); -bool video_driver_cached_frame_has_valid_framebuffer(void); bool video_driver_cached_frame(void); -bool video_driver_is_alive(void); -bool video_driver_is_focused(void); -bool video_driver_has_windowed(void); uint64_t *video_driver_get_frame_count_ptr(void); bool video_driver_frame_filter_alive(void); bool video_driver_frame_filter_is_32bit(void); @@ -506,6 +514,9 @@ extern video_driver_t video_drm; extern video_driver_t video_xshm; extern video_driver_t video_null; +extern void *video_driver_data; +extern video_driver_t *current_video; + RETRO_END_DECLS #endif