From 1bd74718ee83e6923ce11d3cac620b52f0a99610 Mon Sep 17 00:00:00 2001 From: alphanu1 <37101891+alphanu1@users.noreply.github.com> Date: Tue, 8 May 2018 15:13:37 +0100 Subject: [PATCH] added swap_interval change for CRT Change for interlaced resolution when CRT active --- gfx/video_driver.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 1776954fef..91b0f7c6ff 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -1017,6 +1017,10 @@ static bool video_driver_init_internal(bool *video_is_threaded) video.force_aspect = settings->bools.video_force_aspect; video.font_enable = settings->bools.video_font_enable; video.swap_interval = settings->uints.video_swap_interval; + + if (video_driver_crt_switching_active) + video.swap_interval = 0; + #ifdef GEKKO video.viwidth = settings->uints.video_viwidth; video.vfilter = settings->bools.video_vfilter; @@ -2619,6 +2623,12 @@ void video_driver_frame(const void *data, unsigned width, { video_driver_crt_switching_active = true; + if (height > 300) + current_video_context.swap_interval(video_context_data, 0); + + if (height < 300) + current_video_context.swap_interval(video_context_data, 1); + if (video_info.crt_switch_resolution_super == 2560) width = 2560; if (video_info.crt_switch_resolution_super == 3840) @@ -3186,10 +3196,14 @@ bool video_context_driver_get_video_output_size(gfx_ctx_size_t *size_data) bool video_context_driver_swap_interval(unsigned *interval) { + if (!video_driver_crt_switching_active) + { if (!current_video_context.swap_interval) return false; current_video_context.swap_interval(video_context_data, *interval); return true; + } + return true; } bool video_context_driver_get_proc_address(gfx_ctx_proc_address_t *proc)