Cleanups, don't try to pass settings pointer to functions unless we have to

This commit is contained in:
twinaphex 2021-04-10 03:01:25 +02:00
parent 338c2eb2f0
commit 5ca666acee
1 changed files with 43 additions and 33 deletions

View File

@ -28345,21 +28345,18 @@ void audio_driver_set_buffer_size(size_t bufsize)
} }
static float audio_driver_monitor_adjust_system_rates( static float audio_driver_monitor_adjust_system_rates(
settings_t *settings, const struct retro_system_timing *info,
struct retro_system_av_info *av_info) float video_refresh_rate,
unsigned video_swap_interval,
float audio_max_timing_skew)
{ {
const struct retro_system_timing *info =
(const struct retro_system_timing*)&av_info->timing;
float ret = info->sample_rate; float ret = info->sample_rate;
const float target_video_sync_rate = const float target_video_sync_rate = video_refresh_rate
settings->floats.video_refresh_rate / video_swap_interval;
/ settings->uints.video_swap_interval;
float max_timing_skew =
settings->floats.audio_max_timing_skew;
float timing_skew = float timing_skew =
fabs(1.0f - info->fps / target_video_sync_rate); fabs(1.0f - info->fps / target_video_sync_rate);
if (timing_skew <= max_timing_skew) if (timing_skew <= audio_max_timing_skew)
ret *= target_video_sync_rate / info->fps; return (ret * target_video_sync_rate / info->fps);
return ret; return ret;
} }
@ -30489,11 +30486,6 @@ static void video_driver_monitor_adjust_system_rates(
{ {
float timing_skew_hz = video_refresh_rate; float timing_skew_hz = video_refresh_rate;
if (!info || info->fps <= 0.0)
return;
p_rarch->video_driver_core_hz = info->fps;
if (p_rarch->video_driver_crt_switching_active) if (p_rarch->video_driver_crt_switching_active)
timing_skew_hz = p_rarch->video_driver_core_hz; timing_skew_hz = p_rarch->video_driver_core_hz;
@ -32611,8 +32603,13 @@ static void camera_driver_find_driver(struct rarch_state *p_rarch,
} }
} }
static void driver_adjust_system_rates(struct rarch_state *p_rarch, static void driver_adjust_system_rates(
settings_t *settings) struct rarch_state *p_rarch,
bool vrr_runloop_enable,
float video_refresh_rate,
float audio_max_timing_skew,
bool video_adaptive_vsync,
unsigned video_swap_interval)
{ {
struct retro_system_av_info *av_info = &p_rarch->video_driver_av_info; struct retro_system_av_info *av_info = &p_rarch->video_driver_av_info;
const struct retro_system_timing *info = const struct retro_system_timing *info =
@ -32620,14 +32617,15 @@ static void driver_adjust_system_rates(struct rarch_state *p_rarch,
if (info->sample_rate > 0.0) if (info->sample_rate > 0.0)
{ {
bool vrr_runloop_enable = settings->bools.vrr_runloop_enable;
const struct retro_system_timing *info =
(const struct retro_system_timing*)&av_info->timing;
if (vrr_runloop_enable) if (vrr_runloop_enable)
p_rarch->audio_driver_input = info->sample_rate; p_rarch->audio_driver_input = info->sample_rate;
else else
p_rarch->audio_driver_input = p_rarch->audio_driver_input =
audio_driver_monitor_adjust_system_rates(settings, av_info); audio_driver_monitor_adjust_system_rates(
info,
video_refresh_rate,
video_swap_interval,
audio_max_timing_skew);
RARCH_LOG("[Audio]: Set audio input rate to: %.2f Hz.\n", RARCH_LOG("[Audio]: Set audio input rate to: %.2f Hz.\n",
p_rarch->audio_driver_input); p_rarch->audio_driver_input);
@ -32635,21 +32633,21 @@ static void driver_adjust_system_rates(struct rarch_state *p_rarch,
p_rarch->runloop_force_nonblock = false; p_rarch->runloop_force_nonblock = false;
video_driver_monitor_adjust_system_rates(p_rarch, if (info && info->fps > 0.0)
settings->floats.video_refresh_rate, {
settings->bools.vrr_runloop_enable, p_rarch->video_driver_core_hz = info->fps;
settings->floats.audio_max_timing_skew, video_driver_monitor_adjust_system_rates(p_rarch,
(const struct retro_system_timing*) video_refresh_rate,
&p_rarch->video_driver_av_info.timing); vrr_runloop_enable,
audio_max_timing_skew,
info);
}
if (!VIDEO_DRIVER_GET_PTR_INTERNAL(p_rarch)) if (!VIDEO_DRIVER_GET_PTR_INTERNAL(p_rarch))
return; return;
if (p_rarch->runloop_force_nonblock) if (p_rarch->runloop_force_nonblock)
{ {
bool video_adaptive_vsync = settings->bools.video_adaptive_vsync;
unsigned video_swap_interval = settings->uints.video_swap_interval;
if (p_rarch->current_video->set_nonblock_state) if (p_rarch->current_video->set_nonblock_state)
p_rarch->current_video->set_nonblock_state( p_rarch->current_video->set_nonblock_state(
p_rarch->video_driver_data, true, p_rarch->video_driver_data, true,
@ -32740,7 +32738,13 @@ static void drivers_init(struct rarch_state *p_rarch,
#endif #endif
if (flags & (DRIVER_VIDEO_MASK | DRIVER_AUDIO_MASK)) if (flags & (DRIVER_VIDEO_MASK | DRIVER_AUDIO_MASK))
driver_adjust_system_rates(p_rarch, settings); driver_adjust_system_rates(p_rarch,
settings->bools.vrr_runloop_enable,
settings->floats.video_refresh_rate,
settings->floats.audio_max_timing_skew,
settings->bools.video_adaptive_vsync,
settings->uints.video_swap_interval
);
/* Initialize video driver */ /* Initialize video driver */
if (flags & DRIVER_VIDEO_MASK) if (flags & DRIVER_VIDEO_MASK)
@ -33083,7 +33087,13 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
(double)p_rarch->configuration_settings->uints.audio_out_rate (double)p_rarch->configuration_settings->uints.audio_out_rate
/ p_rarch->audio_driver_input; / p_rarch->audio_driver_input;
driver_adjust_system_rates(p_rarch, p_rarch->configuration_settings); driver_adjust_system_rates(p_rarch,
p_rarch->configuration_settings->bools.vrr_runloop_enable,
p_rarch->configuration_settings->floats.video_refresh_rate,
p_rarch->configuration_settings->floats.audio_max_timing_skew,
p_rarch->configuration_settings->bools.video_adaptive_vsync,
p_rarch->configuration_settings->uints.video_swap_interval
);
} }
break; break;
case RARCH_DRIVER_CTL_FIND_FIRST: case RARCH_DRIVER_CTL_FIND_FIRST: