summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorValentin Kravtsov <valentink@google.com>2011-03-18 09:27:56 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-03-18 09:27:56 -0700
commitb18a047de574f188b2c7633164f15ab3c9e40b5b (patch)
tree29d4d30a329687c3323bfe201a532aa564661485 /core/java
parent6ed6f6d82d7b9f8d82f3ab3a9f718a0e59ffa476 (diff)
parentd35f939010cb889d0e5d757f2e3f76c5b50b419a (diff)
downloadframeworks_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/java')
-rw-r--r--core/java/android/speech/RecognitionService.java14
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);
}