mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
Use better already existing race guard 'audio_suspended' instead
of 'video_driver_is_switching_mode'
This commit is contained in:
parent
d429ecf304
commit
d2283a5237
51
retroarch.c
51
retroarch.c
@ -14913,6 +14913,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
if (!video_driver_has_windowed())
|
||||
return false;
|
||||
|
||||
p_rarch->audio_suspended = true;
|
||||
p_rarch->rarch_is_switching_display_mode = true;
|
||||
|
||||
/* we toggled manually, write the new value to settings */
|
||||
@ -14942,6 +14943,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
}
|
||||
|
||||
p_rarch->rarch_is_switching_display_mode = false;
|
||||
p_rarch->audio_suspended = false;
|
||||
|
||||
if (userdata && *userdata == true)
|
||||
video_driver_cached_frame();
|
||||
@ -28208,7 +28210,7 @@ static void audio_driver_flush(
|
||||
|
||||
if (p_rarch->audio_driver_use_float)
|
||||
output_frames *= sizeof(float);
|
||||
else if (p_rarch->audio_driver_output_samples_conv_buf)
|
||||
else
|
||||
{
|
||||
convert_float_to_s16(p_rarch->audio_driver_output_samples_conv_buf,
|
||||
(const float*)output_data, output_frames * 2);
|
||||
@ -28216,16 +28218,10 @@ static void audio_driver_flush(
|
||||
output_data = p_rarch->audio_driver_output_samples_conv_buf;
|
||||
output_frames *= sizeof(int16_t);
|
||||
}
|
||||
else
|
||||
{
|
||||
output_data = NULL;
|
||||
output_frames = 0;
|
||||
}
|
||||
|
||||
if (output_data && output_frames > 0)
|
||||
p_rarch->current_audio->write(
|
||||
p_rarch->audio_driver_context_audio_data,
|
||||
output_data, output_frames * 2);
|
||||
p_rarch->current_audio->write(
|
||||
p_rarch->audio_driver_context_audio_data,
|
||||
output_data, output_frames * 2);
|
||||
}
|
||||
}
|
||||
|
||||
@ -28241,11 +28237,6 @@ static void audio_driver_sample(int16_t left, int16_t right)
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (p_rarch->audio_suspended)
|
||||
return;
|
||||
/* If this returns false, it's probably a good time to bail */
|
||||
if (!p_rarch->audio_driver_output_samples_conv_buf)
|
||||
return;
|
||||
if (p_rarch->rarch_is_switching_display_mode)
|
||||
return;
|
||||
p_rarch->audio_driver_output_samples_conv_buf[p_rarch->audio_driver_data_ptr++] = left;
|
||||
p_rarch->audio_driver_output_samples_conv_buf[p_rarch->audio_driver_data_ptr++] = right;
|
||||
|
||||
@ -28264,7 +28255,7 @@ static void audio_driver_sample(int16_t left, int16_t right)
|
||||
p_rarch->recording_driver->push_audio(p_rarch->recording_data, &ffemu_data);
|
||||
}
|
||||
|
||||
if (!(runloop_state.paused ||
|
||||
if (!(runloop_state.paused ||
|
||||
!p_rarch->audio_driver_active ||
|
||||
!p_rarch->audio_driver_output_samples_buf))
|
||||
audio_driver_flush(
|
||||
@ -28289,9 +28280,11 @@ static void audio_driver_menu_sample(void)
|
||||
(const struct retro_system_timing*)&av_info->timing;
|
||||
unsigned sample_count = (info->sample_rate / info->fps) * 2;
|
||||
bool check_flush = !(
|
||||
runloop_state.paused ||
|
||||
runloop_state.paused ||
|
||||
!p_rarch->audio_driver_active ||
|
||||
!p_rarch->audio_driver_output_samples_buf);
|
||||
if (p_rarch->audio_suspended)
|
||||
check_flush = false;
|
||||
|
||||
while (sample_count > 1024)
|
||||
{
|
||||
@ -28357,8 +28350,7 @@ static size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (frames > (AUDIO_CHUNK_SIZE_NONBLOCKING >> 1))
|
||||
frames = AUDIO_CHUNK_SIZE_NONBLOCKING >> 1;
|
||||
|
||||
if (p_rarch->audio_suspended || p_rarch->rarch_is_switching_display_mode)
|
||||
if (p_rarch->audio_suspended)
|
||||
return frames;
|
||||
|
||||
if ( p_rarch->recording_data &&
|
||||
@ -29246,16 +29238,17 @@ void audio_driver_frame_is_reverse(void)
|
||||
runloop_state.paused ||
|
||||
!p_rarch->audio_driver_active ||
|
||||
!p_rarch->audio_driver_output_samples_buf))
|
||||
audio_driver_flush(
|
||||
p_rarch,
|
||||
p_rarch->configuration_settings->floats.slowmotion_ratio,
|
||||
p_rarch->configuration_settings->bools.audio_fastforward_mute,
|
||||
p_rarch->audio_driver_rewind_buf +
|
||||
p_rarch->audio_driver_rewind_ptr,
|
||||
p_rarch->audio_driver_rewind_size -
|
||||
p_rarch->audio_driver_rewind_ptr,
|
||||
runloop_state.slowmotion,
|
||||
runloop_state.fastmotion);
|
||||
if (!p_rarch->audio_suspended)
|
||||
audio_driver_flush(
|
||||
p_rarch,
|
||||
p_rarch->configuration_settings->floats.slowmotion_ratio,
|
||||
p_rarch->configuration_settings->bools.audio_fastforward_mute,
|
||||
p_rarch->audio_driver_rewind_buf +
|
||||
p_rarch->audio_driver_rewind_ptr,
|
||||
p_rarch->audio_driver_rewind_size -
|
||||
p_rarch->audio_driver_rewind_ptr,
|
||||
runloop_state.slowmotion,
|
||||
runloop_state.fastmotion);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user