Ensure looper isn't used after invalidateSensorQueue

looper->signalSensorEvents causes the sensor event queue to be
re-registered even if invalidateSensorQueue has already been called.
This can happen if events are still being sent through onEvent even
after invalidate() is invoked.

Ensure that invalidate() stops any further usage of the looper through
onEvent to avoid using freed data.

Bug: 132658096
Test: Verify VNDK can sample as normal
Change-Id: I7dfbf10776d9386433aa3c64667ba41fc45cb7cb
diff --git a/sensorservice/libsensorndkbridge/ASensorEventQueue.cpp b/sensorservice/libsensorndkbridge/ASensorEventQueue.cpp
index d109426..7eee89c 100644
--- a/sensorservice/libsensorndkbridge/ASensorEventQueue.cpp
+++ b/sensorservice/libsensorndkbridge/ASensorEventQueue.cpp
@@ -106,16 +106,12 @@
     LOG(VERBOSE) << "ASensorEventQueue::onEvent";
 
     if (static_cast<int32_t>(event.sensorType) != ASENSOR_TYPE_ADDITIONAL_INFO ||
-        mRequestAdditionalInfo.load()) {
-        {
-            Mutex::Autolock autoLock(mLock);
+            mRequestAdditionalInfo.load()) {
 
-            mQueue.emplace_back();
-            sensors_event_t* sensorEvent = &mQueue[mQueue.size() - 1];
-            android::hardware::sensors::V1_0::implementation::convertToSensorEvent(event,
-                                                                                   sensorEvent);
-        }
-
+        Mutex::Autolock autoLock(mLock);
+        mQueue.emplace_back();
+        sensors_event_t* sensorEvent = &mQueue[mQueue.size() - 1];
+        android::hardware::sensors::V1_0::implementation::convertToSensorEvent(event, sensorEvent);
         mLooper->signalSensorEvents(this);
     }
 
@@ -134,6 +130,7 @@
 }
 
 void ASensorEventQueue::invalidate() {
+    Mutex::Autolock autoLock(mLock);
     mLooper->invalidateSensorQueue(this);
     setImpl(nullptr);
 }