diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-27 15:09:59 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-07-27 15:09:59 -0700 |
commit | 0326beef199db3a5a833090b39e30deb5a3f346d (patch) | |
tree | 7ef16603af4cc86a92c4201cf6cab7747eac240b /packages/TtsService | |
parent | b7c64f15850ff5d1a8a2895bfb40b430344fa9ed (diff) | |
parent | 79858fe2f5b088ad93e461ea94e544bfce3c2e09 (diff) | |
download | frameworks_base-0326beef199db3a5a833090b39e30deb5a3f346d.zip frameworks_base-0326beef199db3a5a833090b39e30deb5a3f346d.tar.gz frameworks_base-0326beef199db3a5a833090b39e30deb5a3f346d.tar.bz2 |
am 79858fe2: Merge change 8678 into donut
Merge commit '79858fe2f5b088ad93e461ea94e544bfce3c2e09'
* commit '79858fe2f5b088ad93e461ea94e544bfce3c2e09':
Fixing bug #2008185 - problem with the TTS dropping
Diffstat (limited to 'packages/TtsService')
-rwxr-xr-x | packages/TtsService/src/android/tts/TtsService.java | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/packages/TtsService/src/android/tts/TtsService.java b/packages/TtsService/src/android/tts/TtsService.java index e52ba80..6832862 100755 --- a/packages/TtsService/src/android/tts/TtsService.java +++ b/packages/TtsService/src/android/tts/TtsService.java @@ -109,7 +109,9 @@ public class TtsService extends Service implements OnCompletionListener { mFilename = file; } } - + // If the speech queue is locked for more than 5 seconds, something has gone + // very wrong with processSpeechQueue. + private static final int SPEECHQUEUELOCK_TIMEOUT = 5000; private static final int MAX_SPEECH_ITEM_CHAR_LENGTH = 4000; private static final int MAX_FILENAME_LENGTH = 250; // TODO use the TTS stream type when available @@ -389,9 +391,8 @@ public class TtsService extends Service implements OnCompletionListener { int result = TextToSpeech.TTS_ERROR; boolean speechQueueAvailable = false; try{ - // If the queue is locked for more than 1 second, - // something has gone very wrong with processSpeechQueue. - speechQueueAvailable = speechQueueLock.tryLock(1000, TimeUnit.MILLISECONDS); + speechQueueAvailable = + speechQueueLock.tryLock(SPEECHQUEUELOCK_TIMEOUT, TimeUnit.MILLISECONDS); if (speechQueueAvailable) { Log.i("TtsService", "Stopping"); for (int i = mSpeechQueue.size() - 1; i > -1; i--){ @@ -439,9 +440,8 @@ public class TtsService extends Service implements OnCompletionListener { int result = TextToSpeech.TTS_ERROR; boolean speechQueueAvailable = false; try{ - // If the queue is locked for more than 1 second, - // something has gone very wrong with processSpeechQueue. - speechQueueAvailable = speechQueueLock.tryLock(1000, TimeUnit.MILLISECONDS); + speechQueueAvailable = + speechQueueLock.tryLock(SPEECHQUEUELOCK_TIMEOUT, TimeUnit.MILLISECONDS); if (speechQueueAvailable) { for (int i = mSpeechQueue.size() - 1; i > -1; i--){ if (mSpeechQueue.get(i).mType != SpeechItem.TEXT_TO_FILE){ @@ -752,8 +752,10 @@ public class TtsService extends Service implements OnCompletionListener { private void processSpeechQueue() { boolean speechQueueAvailable = false; try { - speechQueueAvailable = speechQueueLock.tryLock(); + speechQueueAvailable = + speechQueueLock.tryLock(SPEECHQUEUELOCK_TIMEOUT, TimeUnit.MILLISECONDS); if (!speechQueueAvailable) { + Log.e("TtsService", "processSpeechQueue - Speech queue is unavailable."); return; } if (mSpeechQueue.size() < 1) { @@ -822,6 +824,9 @@ public class TtsService extends Service implements OnCompletionListener { if (mSpeechQueue.size() > 0) { mSpeechQueue.remove(0); } + } catch (InterruptedException e) { + Log.e("TtsService", "TTS processSpeechQueue: tryLock interrupted"); + e.printStackTrace(); } finally { // This check is needed because finally will always run; even if the // method returns somewhere in the try block. |