From d2478cc453750e4081e0b6eaeca1442b8abaa92f Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Fri, 23 Dec 2016 19:34:13 +0000 Subject: [PATCH] Flush the audio if speech has stopped, drain the audio if speech is still active. --- src/libespeak-ng/speech.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libespeak-ng/speech.c b/src/libespeak-ng/speech.c index f181420c..ef26dc48 100644 --- a/src/libespeak-ng/speech.c +++ b/src/libespeak-ng/speech.c @@ -503,7 +503,9 @@ espeak_ng_STATUS sync_espeak_Synth(unsigned int unique_identifier, const void *t espeak_ng_STATUS aStatus = Synthesize(unique_identifier, text, flags); #ifdef HAVE_PCAUDIOLIB_AUDIO_H if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) { - int error = audio_object_drain(my_audio); + int error = (aStatus == ENS_SPEECH_STOPPED) + ? audio_object_flush(my_audio) + : audio_object_drain(my_audio); if (error != 0) fprintf(stderr, "error: %s\n", audio_object_strerror(my_audio, error)); }