vlc | branch: master | Jean-Baptiste Kempf <[email protected]> | Sun Oct 11 23:49:52 2015 +0200| [70826e2628d70d054385ef7472929339bf56b7af] | committer: Jean-Baptiste Kempf
SAPI: fix leaks, cosmetics and simplify > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=70826e2628d70d054385ef7472929339bf56b7af --- modules/text_renderer/sapi.cpp | 81 +++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 46 deletions(-) diff --git a/modules/text_renderer/sapi.cpp b/modules/text_renderer/sapi.cpp index 5df8dcf..501cdef 100644 --- a/modules/text_renderer/sapi.cpp +++ b/modules/text_renderer/sapi.cpp @@ -70,7 +70,7 @@ struct filter_sys_t /* MTA functions */ static int TryEnterMTA(vlc_object_t *obj) { - HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); + HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); if (unlikely(FAILED(hr))) { msg_Err (obj, "cannot initialize COM (error 0x%lx)", hr); @@ -82,7 +82,7 @@ static int TryEnterMTA(vlc_object_t *obj) static void EnterMTA(void) { - HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED); + HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); if (unlikely(FAILED(hr))) abort(); } @@ -105,16 +105,16 @@ static int Create (vlc_object_t *p_this) if (!p_sys) goto error; - p_sys->cpVoice = nullptr; - p_sys->lastString = nullptr; + p_sys->cpVoice = NULL; + p_sys->lastString = NULL; - hr = CoCreateInstance(CLSID_SpVoice, nullptr, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**) &p_sys->cpVoice); + hr = CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void**) &p_sys->cpVoice); if (SUCCEEDED(hr)) { - ISpObjectToken* cpVoiceToken = nullptr; - IEnumSpObjectTokens* cpEnum = nullptr; + ISpObjectToken* cpVoiceToken = NULL; + IEnumSpObjectTokens* cpEnum = NULL; ULONG ulCount = 0; - hr = SpEnumTokens(SPCAT_VOICES, nullptr, nullptr, &cpEnum); + hr = SpEnumTokens(SPCAT_VOICES, NULL, NULL, &cpEnum); if (SUCCEEDED(hr)) { // Get the number of voices. @@ -135,7 +135,7 @@ static int Create (vlc_object_t *p_this) msg_Err(p_this, "Failed to set voice %d", voiceIndex); } cpVoiceToken->Release(); - cpVoiceToken = nullptr; + cpVoiceToken = NULL; } } else @@ -143,10 +143,9 @@ static int Create (vlc_object_t *p_this) } } cpEnum->Release(); - cpEnum = nullptr; /* Set Output */ - hr = p_sys->cpVoice->SetOutput(nullptr, TRUE); + hr = p_sys->cpVoice->SetOutput(NULL, TRUE); } } else @@ -172,63 +171,53 @@ static void Destroy(vlc_object_t *p_this) filter_t *p_filter = (filter_t *)p_this; filter_sys_t *p_sys = p_filter->p_sys; - if (p_sys->cpVoice) { + if (p_sys->cpVoice) p_sys->cpVoice->Release(); - p_sys->cpVoice = nullptr; - } - - if (p_sys->lastString) { - free(p_sys->lastString); - p_sys->lastString = nullptr; - } + free(p_sys->lastString); free(p_sys); } static int RenderText(filter_t *p_filter, - subpicture_region_t *p_region_out, + subpicture_region_t *, subpicture_region_t *p_region_in, - const vlc_fourcc_t *p_chroma_list) + const vlc_fourcc_t *) { - VLC_UNUSED(p_region_out); - VLC_UNUSED(p_chroma_list); - filter_sys_t *p_sys = p_filter->p_sys; text_segment_t *p_segment = p_region_in->p_text; if (!p_segment) return VLC_EGENERIC; - for (const text_segment_t *s = p_segment; s != nullptr; s = s->p_next ) { - if (!s->psz_text ) + for (const text_segment_t *s = p_segment; s != NULL; s = s->p_next ) { + if (!s->psz_text) continue; if (strlen(s->psz_text) == 0) continue; - try { - if (p_sys->lastString && !strcmp(p_sys->lastString, s->psz_text)) - continue; - - if (!strcmp(s->psz_text, "\n")) - continue; + if (p_sys->lastString && !strcmp(p_sys->lastString, s->psz_text)) + continue; - p_sys->lastString = strdup(s->psz_text); - if (p_sys->lastString) { - msg_Dbg(p_filter, "Speaking '%s'", s->psz_text); + if (!strcmp(s->psz_text, "\n")) + continue; - EnterMTA(); - wchar_t* wideText = ToWide(s->psz_text); - HRESULT hr = p_sys->cpVoice->Speak(wideText, SPF_ASYNC, nullptr); - free(wideText); - if (!SUCCEEDED(hr)) { - msg_Err(p_filter, "Speak() error"); - } - LeaveMTA(); + /* */ + free(p_sys->lastString); + p_sys->lastString = strdup(s->psz_text); + + /* */ + if (p_sys->lastString) { + msg_Dbg(p_filter, "Speaking '%s'", s->psz_text); + + EnterMTA(); + wchar_t* wideText = ToWide(s->psz_text); + HRESULT hr = p_sys->cpVoice->Speak(wideText, SPF_ASYNC, NULL); + free(wideText); + if (!SUCCEEDED(hr)) { + msg_Err(p_filter, "Speak() error"); } - } - catch (...) { - msg_Err(p_filter, "Caught an exception!"); + LeaveMTA(); } } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
