mirror of
https://github.com/libretro/RetroArch
synced 2025-04-10 15:45:19 +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())
|
if (!video_driver_has_windowed())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
p_rarch->audio_suspended = true;
|
||||||
p_rarch->rarch_is_switching_display_mode = true;
|
p_rarch->rarch_is_switching_display_mode = true;
|
||||||
|
|
||||||
/* we toggled manually, write the new value to settings */
|
/* 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->rarch_is_switching_display_mode = false;
|
||||||
|
p_rarch->audio_suspended = false;
|
||||||
|
|
||||||
if (userdata && *userdata == true)
|
if (userdata && *userdata == true)
|
||||||
video_driver_cached_frame();
|
video_driver_cached_frame();
|
||||||
@ -28208,7 +28210,7 @@ static void audio_driver_flush(
|
|||||||
|
|
||||||
if (p_rarch->audio_driver_use_float)
|
if (p_rarch->audio_driver_use_float)
|
||||||
output_frames *= sizeof(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,
|
convert_float_to_s16(p_rarch->audio_driver_output_samples_conv_buf,
|
||||||
(const float*)output_data, output_frames * 2);
|
(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_data = p_rarch->audio_driver_output_samples_conv_buf;
|
||||||
output_frames *= sizeof(int16_t);
|
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->current_audio->write(
|
p_rarch->audio_driver_context_audio_data,
|
||||||
p_rarch->audio_driver_context_audio_data,
|
output_data, output_frames * 2);
|
||||||
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;
|
struct rarch_state *p_rarch = &rarch_st;
|
||||||
if (p_rarch->audio_suspended)
|
if (p_rarch->audio_suspended)
|
||||||
return;
|
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++] = left;
|
||||||
p_rarch->audio_driver_output_samples_conv_buf[p_rarch->audio_driver_data_ptr++] = right;
|
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);
|
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_active ||
|
||||||
!p_rarch->audio_driver_output_samples_buf))
|
!p_rarch->audio_driver_output_samples_buf))
|
||||||
audio_driver_flush(
|
audio_driver_flush(
|
||||||
@ -28289,9 +28280,11 @@ static void audio_driver_menu_sample(void)
|
|||||||
(const struct retro_system_timing*)&av_info->timing;
|
(const struct retro_system_timing*)&av_info->timing;
|
||||||
unsigned sample_count = (info->sample_rate / info->fps) * 2;
|
unsigned sample_count = (info->sample_rate / info->fps) * 2;
|
||||||
bool check_flush = !(
|
bool check_flush = !(
|
||||||
runloop_state.paused ||
|
runloop_state.paused ||
|
||||||
!p_rarch->audio_driver_active ||
|
!p_rarch->audio_driver_active ||
|
||||||
!p_rarch->audio_driver_output_samples_buf);
|
!p_rarch->audio_driver_output_samples_buf);
|
||||||
|
if (p_rarch->audio_suspended)
|
||||||
|
check_flush = false;
|
||||||
|
|
||||||
while (sample_count > 1024)
|
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;
|
struct rarch_state *p_rarch = &rarch_st;
|
||||||
if (frames > (AUDIO_CHUNK_SIZE_NONBLOCKING >> 1))
|
if (frames > (AUDIO_CHUNK_SIZE_NONBLOCKING >> 1))
|
||||||
frames = AUDIO_CHUNK_SIZE_NONBLOCKING >> 1;
|
frames = AUDIO_CHUNK_SIZE_NONBLOCKING >> 1;
|
||||||
|
if (p_rarch->audio_suspended)
|
||||||
if (p_rarch->audio_suspended || p_rarch->rarch_is_switching_display_mode)
|
|
||||||
return frames;
|
return frames;
|
||||||
|
|
||||||
if ( p_rarch->recording_data &&
|
if ( p_rarch->recording_data &&
|
||||||
@ -29246,16 +29238,17 @@ void audio_driver_frame_is_reverse(void)
|
|||||||
runloop_state.paused ||
|
runloop_state.paused ||
|
||||||
!p_rarch->audio_driver_active ||
|
!p_rarch->audio_driver_active ||
|
||||||
!p_rarch->audio_driver_output_samples_buf))
|
!p_rarch->audio_driver_output_samples_buf))
|
||||||
audio_driver_flush(
|
if (!p_rarch->audio_suspended)
|
||||||
p_rarch,
|
audio_driver_flush(
|
||||||
p_rarch->configuration_settings->floats.slowmotion_ratio,
|
p_rarch,
|
||||||
p_rarch->configuration_settings->bools.audio_fastforward_mute,
|
p_rarch->configuration_settings->floats.slowmotion_ratio,
|
||||||
p_rarch->audio_driver_rewind_buf +
|
p_rarch->configuration_settings->bools.audio_fastforward_mute,
|
||||||
p_rarch->audio_driver_rewind_ptr,
|
p_rarch->audio_driver_rewind_buf +
|
||||||
p_rarch->audio_driver_rewind_size -
|
p_rarch->audio_driver_rewind_ptr,
|
||||||
p_rarch->audio_driver_rewind_ptr,
|
p_rarch->audio_driver_rewind_size -
|
||||||
runloop_state.slowmotion,
|
p_rarch->audio_driver_rewind_ptr,
|
||||||
runloop_state.fastmotion);
|
runloop_state.slowmotion,
|
||||||
|
runloop_state.fastmotion);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user