aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/speech.h5
-rw-r--r--res/res_speech.c3
2 files changed, 5 insertions, 3 deletions
diff --git a/include/asterisk/speech.h b/include/asterisk/speech.h
index 3af01e614..85e17edf2 100644
--- a/include/asterisk/speech.h
+++ b/include/asterisk/speech.h
@@ -28,8 +28,9 @@ extern "C" {
#endif
/* Speech structure flags */
-#define AST_SPEECH_QUIET (1 << 0) /* Quiet down output... they are talking */
-#define AST_SPEECH_SPOKE (1 << 1) /* Speaker did not speak */
+#define AST_SPEECH_QUIET (1 << 0) /* Quiet down output... they are talking */
+#define AST_SPEECH_SPOKE (1 << 1) /* Speaker did not speak */
+#define AST_SPEECH_HAVE_RESULTS (1 << 2) /* Results are present */
/* Speech structure states - in order of expected change */
#define AST_SPEECH_STATE_NOT_READY 0 /* Not ready to accept audio */
diff --git a/res/res_speech.c b/res/res_speech.c
index 16673538b..73dfe8dec 100644
--- a/res/res_speech.c
+++ b/res/res_speech.c
@@ -120,7 +120,7 @@ struct ast_speech_result *ast_speech_results_get(struct ast_speech *speech)
{
struct ast_speech_result *result = NULL;
- if (speech->engine->get != NULL) {
+ if (speech->engine->get != NULL && ast_test_flag(speech, AST_SPEECH_HAVE_RESULTS)) {
result = speech->engine->get(speech);
}
@@ -160,6 +160,7 @@ void ast_speech_start(struct ast_speech *speech)
/* Clear any flags that may affect things */
ast_clear_flag(speech, AST_SPEECH_SPOKE);
ast_clear_flag(speech, AST_SPEECH_QUIET);
+ ast_clear_flag(speech, AST_SPEECH_HAVE_RESULTS);
/* If results are on the structure, free them since we are starting again */
if (speech->results != NULL) {