summaryrefslogtreecommitdiffstats
path: root/packages/TtsService
diff options
context:
space:
mode:
authorCharles Chen <clchen@google.com>2009-12-29 20:11:10 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2009-12-29 20:11:10 -0800
commitf524115e10613943ef75ab0757217d29a2372181 (patch)
tree3aacfb0d6f5b3f615ed287bc12567a503d08c3f4 /packages/TtsService
parent7ebdcbdb6f3314ffa3f3817ed62251b8973179fa (diff)
parent014085a8727d7e10a4d39cba4a6d27826b66bc00 (diff)
downloadframeworks_base-f524115e10613943ef75ab0757217d29a2372181.zip
frameworks_base-f524115e10613943ef75ab0757217d29a2372181.tar.gz
frameworks_base-f524115e10613943ef75ab0757217d29a2372181.tar.bz2
am 014085a8: am 4bc95d19: Merge change Iab089078 into eclair-mr2
Merge commit '014085a8727d7e10a4d39cba4a6d27826b66bc00' * commit '014085a8727d7e10a4d39cba4a6d27826b66bc00': Fix for a race condition that can occur if an utterance
Diffstat (limited to 'packages/TtsService')
-rwxr-xr-xpackages/TtsService/src/android/tts/TtsService.java37
1 files changed, 21 insertions, 16 deletions
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java
index 8d8ef8e..23365c9 100755
--- a/packages/TtsService/src/android/tts/TtsService.java
+++ b/packages/TtsService/src/android/tts/TtsService.java
@@ -661,22 +661,27 @@ public class TtsService extends Service implements OnCompletionListener {
}
}
- public void onCompletion(MediaPlayer arg0) {
- String callingApp = mCurrentSpeechItem.mCallingApp;
- ArrayList<String> params = mCurrentSpeechItem.mParams;
- String utteranceId = "";
- if (params != null){
- for (int i = 0; i < params.size() - 1; i = i + 2){
- String param = params.get(i);
- if (param.equals(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID)){
- utteranceId = params.get(i+1);
- }
- }
- }
- if (utteranceId.length() > 0){
- dispatchUtteranceCompletedCallback(utteranceId, callingApp);
- }
- processSpeechQueue();
+ public void onCompletion(MediaPlayer arg0) {
+ // mCurrentSpeechItem may become null if it is stopped at the same
+ // time it completes.
+ SpeechItem currentSpeechItemCopy = mCurrentSpeechItem;
+ if (currentSpeechItemCopy != null) {
+ String callingApp = currentSpeechItemCopy.mCallingApp;
+ ArrayList<String> params = currentSpeechItemCopy.mParams;
+ String utteranceId = "";
+ if (params != null) {
+ for (int i = 0; i < params.size() - 1; i = i + 2) {
+ String param = params.get(i);
+ if (param.equals(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID)) {
+ utteranceId = params.get(i + 1);
+ }
+ }
+ }
+ if (utteranceId.length() > 0) {
+ dispatchUtteranceCompletedCallback(utteranceId, callingApp);
+ }
+ }
+ processSpeechQueue();
}
private int playSilence(String callingApp, long duration, int queueMode,