Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 125be9c8 authored by Valentin Kravtsov's avatar Valentin Kravtsov Committed by Android (Google) Code Review
Browse files

Merge "Fixing a race condition in RecognitionService" into gingerbread

parents e12a1a09 483701eb
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -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);
        }