When audio driver write callback function fails, don't

turn audio off completely - look if audio_driver_output_samples_conv_buf
is non-NULL first before we attempt to write audio
This commit is contained in:
twinaphex 2021-08-30 02:13:19 +02:00
parent 943e14051c
commit d45945cda2
1 changed files with 9 additions and 4 deletions

View File

@ -28208,7 +28208,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 else if (p_rarch->audio_driver_output_samples_conv_buf)
{ {
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,11 +28216,16 @@ 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 (p_rarch->current_audio->write( if (output_data && output_frames > 0)
p_rarch->current_audio->write(
p_rarch->audio_driver_context_audio_data, p_rarch->audio_driver_context_audio_data,
output_data, output_frames * 2) < 0) output_data, output_frames * 2);
p_rarch->audio_driver_active = false;
} }
} }