From 69b1c4273fe3eb3d6a1fe0a121ae0cbabb3e3ff9 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 22 Oct 2014 11:27:06 -0700 Subject: [PATCH] Tidy object management --- interface/src/SpeechRecognizer.cpp | 27 ++++++++++++++++----------- interface/src/SpeechRecognizer.h | 1 - 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/interface/src/SpeechRecognizer.cpp b/interface/src/SpeechRecognizer.cpp index 2faf4a1033..8869ad1b52 100644 --- a/interface/src/SpeechRecognizer.cpp +++ b/interface/src/SpeechRecognizer.cpp @@ -21,7 +21,6 @@ SpeechRecognizer::SpeechRecognizer() : _enabled(false), _commands(), _comInitialized(false), - _speechRecognizer(NULL), _speechRecognizerContext(NULL), _speechRecognizerGrammar(NULL), _commandRecognizedEvent(NULL), @@ -32,17 +31,23 @@ SpeechRecognizer::SpeechRecognizer() : if (SUCCEEDED(hr)) { _comInitialized = true; } + + _commandRecognizedNotifier = new QWinEventNotifier(); + connect(_commandRecognizedNotifier, SIGNAL(activated(HANDLE)), SLOT(notifyCommandRecognized(HANDLE))); } SpeechRecognizer::~SpeechRecognizer() { + if (_speechRecognizerGrammar) { + _speechRecognizerGrammar.Release(); + } + + if (_enabled) { + _speechRecognizerContext.Release(); + } if (_comInitialized) { ::CoUninitialize(); } - - if (_speechRecognizerGrammar) { - _speechRecognizerGrammar.Release(); - } } void SpeechRecognizer::handleCommandRecognized(const char* command) { @@ -71,14 +76,13 @@ void SpeechRecognizer::setEnabled(bool enabled) { } if (SUCCEEDED(hr)) { _commandRecognizedEvent = _speechRecognizerContext->GetNotifyEventHandle(); - if (_commandRecognizedEvent == NULL) { + if (_commandRecognizedEvent) { + _commandRecognizedNotifier->setHandle(_commandRecognizedEvent); + _commandRecognizedNotifier->setEnabled(true); + } else { hr = S_FALSE; } } - if (SUCCEEDED(hr)) { - _commandRecognizedNotifier = new QWinEventNotifier(_commandRecognizedEvent); - connect(_commandRecognizedNotifier, SIGNAL(activated(HANDLE)), SLOT(notifyCommandRecognized(HANDLE))); - } // Set which events to be notified of. if (SUCCEEDED(hr)) { @@ -96,6 +100,7 @@ void SpeechRecognizer::setEnabled(bool enabled) { _enabled = SUCCEEDED(hr); } else { + _commandRecognizedNotifier->setEnabled(false); _speechRecognizerContext.Release(); } @@ -144,7 +149,7 @@ void SpeechRecognizer::reloadCommands() { } if (SUCCEEDED(hr)) { - hr = _speechRecognizerGrammar->Commit(0); + hr = _speechRecognizerGrammar->Commit(NULL); } if (SUCCEEDED(hr)) { diff --git a/interface/src/SpeechRecognizer.h b/interface/src/SpeechRecognizer.h index b343326de3..90dd14b3fa 100644 --- a/interface/src/SpeechRecognizer.h +++ b/interface/src/SpeechRecognizer.h @@ -52,7 +52,6 @@ private: void* _speechRecognizer; #elif defined(Q_OS_WIN) bool _comInitialized; - CComPtr _speechRecognizer; CComPtr _speechRecognizerContext; CComPtr _speechRecognizerGrammar; HANDLE _commandRecognizedEvent;