Bug 1247514 - Clear speech delegate when finishing speaking. r?eeejay draft
authorMakoto Kato <m_kato@ga2.so-net.ne.jp>
Thu, 03 Mar 2016 11:14:01 +0900
changeset 336381 3a6dd5f1e72a235d5509bfed3b4c92eeae85537f
parent 336372 52cfda4c6bae5c28ab09709655435da6ecda9e2a
child 515378 c9c2192ccef50b0d697e085bfdba36fd5a5cb03c
push id12047
push userm_kato@ga2.so-net.ne.jp
push dateThu, 03 Mar 2016 03:04:38 +0000
reviewerseeejay
bugs1247514
milestone47.0a1
Bug 1247514 - Clear speech delegate when finishing speaking. r?eeejay After dispatched didFinishSpeaking by OS, another events may be dispatched. So I should remove speech delegate soon when didFinishSpeaking is called. MozReview-Commit-ID: nsHKJCX8MQ
dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
--- a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
+++ b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
@@ -146,16 +146,17 @@ SpeechTaskCallback::OnError(uint32_t aIn
   mTask->DispatchError(GetTimeDurationFromStart(), aIndex);
 }
 
 void
 SpeechTaskCallback::OnDidFinishSpeaking()
 {
   mTask->DispatchEnd(GetTimeDurationFromStart(), mCurrentIndex);
   // no longer needed
+  [mSpeechSynthesizer setDelegate:nil];
   mTask = nullptr;
 }
 
 @interface SpeechDelegate : NSObject<NSSpeechSynthesizerDelegate>
 {
 @private
   SpeechTaskCallback* mCallback;
 }