This allows process_espeak_command to stop as soon as possible Using emacspeak server with espeak-ng (still not published) found that audio was only being stoped after a command is processed (i.e. using pcaudiolib). This fixes this issue.master
 Rui Batista
					
					9 years ago
						Rui Batista
					
					9 years ago
				| return status; | return status; | ||||
| int a_stop_is_required = my_stop_is_required; | int a_stop_is_required = my_stop_is_required; | ||||
| if (!a_stop_is_required) | if (!a_stop_is_required) { | ||||
| my_command_is_running = 1; | my_command_is_running = 1; | ||||
| pthread_cond_broadcast(&my_cond_command_is_running); | |||||
| } | |||||
| status = pthread_mutex_unlock(&my_mutex); | status = pthread_mutex_unlock(&my_mutex); | ||||
| my_command_is_running = 1; | my_command_is_running = 1; | ||||
| assert(-1 != pthread_cond_broadcast(&my_cond_command_is_running)); | assert(-1 != pthread_cond_broadcast(&my_cond_command_is_running)); | ||||
| assert(-1 != pthread_mutex_unlock(&my_mutex)); | //assert(-1 != pthread_mutex_unlock(&my_mutex)); | ||||
| while (my_command_is_running) { | while (my_command_is_running) { | ||||
| int a_status = pthread_mutex_lock(&my_mutex); | //int a_status = pthread_mutex_lock(&my_mutex); | ||||
| assert(!a_status); | //assert(!a_status); | ||||
| t_espeak_command *a_command = (t_espeak_command *)pop(); | t_espeak_command *a_command = (t_espeak_command *)pop(); | ||||
| if (a_command == NULL) { | if (a_command == NULL) { | 
| ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Cancel(void) | ESPEAK_NG_API espeak_ng_STATUS espeak_ng_Cancel(void) | ||||
| { | { | ||||
| #ifdef HAVE_PCAUDIOLIB_AUDIO_H | |||||
| if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) | |||||
| audio_object_flush(my_audio); | |||||
| #endif | |||||
| #ifdef USE_ASYNC | #ifdef USE_ASYNC | ||||
| fifo_stop(); | fifo_stop(); | ||||
| event_clear_all(); | event_clear_all(); | ||||
| #endif | #endif | ||||
| #ifdef HAVE_PCAUDIOLIB_AUDIO_H | |||||
| if ((my_mode & ENOUTPUT_MODE_SPEAK_AUDIO) == ENOUTPUT_MODE_SPEAK_AUDIO) | |||||
| audio_object_flush(my_audio); | |||||
| #endif | |||||
| embedded_value[EMBED_T] = 0; // reset echo for pronunciation announcements | embedded_value[EMBED_T] = 0; // reset echo for pronunciation announcements | ||||
| for (int i = 0; i < N_SPEECH_PARAM; i++) | for (int i = 0; i < N_SPEECH_PARAM; i++) |