diff options
author | Valentin Kravtsov <valentink@google.com> | 2011-03-18 09:27:56 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-03-18 09:27:56 -0700 |
commit | b18a047de574f188b2c7633164f15ab3c9e40b5b (patch) | |
tree | 29d4d30a329687c3323bfe201a532aa564661485 /core | |
parent | 6ed6f6d82d7b9f8d82f3ab3a9f718a0e59ffa476 (diff) | |
parent | d35f939010cb889d0e5d757f2e3f76c5b50b419a (diff) | |
download | frameworks_base-b18a047de574f188b2c7633164f15ab3c9e40b5b.zip frameworks_base-b18a047de574f188b2c7633164f15ab3c9e40b5b.tar.gz frameworks_base-b18a047de574f188b2c7633164f15ab3c9e40b5b.tar.bz2 |
am d35f9390: am 000466d7: am 125be9c8: Merge "Fixing a race condition in RecognitionService" into gingerbread
* commit 'd35f939010cb889d0e5d757f2e3f76c5b50b419a':
Fixing a race condition in RecognitionService
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/speech/RecognitionService.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/core/java/android/speech/RecognitionService.java b/core/java/android/speech/RecognitionService.java index 75a5ed5..32b2d8f 100644 --- a/core/java/android/speech/RecognitionService.java +++ b/core/java/android/speech/RecognitionService.java @@ -68,6 +68,8 @@ public abstract class RecognitionService extends Service { private static final int MSG_CANCEL = 3; + private static final int MSG_RESET = 4; + private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { @@ -81,6 +83,10 @@ public abstract class RecognitionService extends Service { break; case MSG_CANCEL: dispatchCancel((IRecognitionListener) msg.obj); + break; + case MSG_RESET: + dispatchClearCallback(); + break; } } }; @@ -128,6 +134,10 @@ public abstract class RecognitionService extends Service { } } + private void dispatchClearCallback() { + mCurrentCallback = null; + } + private class StartListeningArgs { public final Intent mIntent; @@ -241,7 +251,7 @@ public abstract class RecognitionService extends Service { * @param error code is defined in {@link SpeechRecognizer} */ public void error(int error) throws RemoteException { - mCurrentCallback = null; + Message.obtain(mHandler, MSG_RESET).sendToTarget(); mListener.onError(error); } @@ -278,7 +288,7 @@ public abstract class RecognitionService extends Service { * {@link SpeechRecognizer#RESULTS_RECOGNITION} as a parameter */ public void results(Bundle results) throws RemoteException { - mCurrentCallback = null; + Message.obtain(mHandler, MSG_RESET).sendToTarget(); mListener.onResults(results); } |