Add synchronization when EventFlagQueue is created in sensors HAL init
Bug: 380191409
Test: atest VtsAidlHalSensorsTargetTest:Sensors/SensorsAidlTest#CleanupConnectionsOnInitialize/0_android_hardware_sensors_ISensors_default --rerun-until-failure=200 pass
Change-Id: Ia22cf0278acb7e1b7cc62a75926ffc5aa47610eb
diff --git a/sensors/aidl/default/Sensors.cpp b/sensors/aidl/default/Sensors.cpp
index 9e6bea5..853045d 100644
--- a/sensors/aidl/default/Sensors.cpp
+++ b/sensors/aidl/default/Sensors.cpp
@@ -85,9 +85,6 @@
ALOGI("Sensors initializing");
ScopedAStatus result = ScopedAStatus::ok();
- mEventQueue = std::make_unique<AidlMessageQueue<Event, SynchronizedReadWrite>>(
- in_eventQueueDescriptor, true /* resetPointers */);
-
// Ensure that all sensors are disabled.
for (auto sensor : mSensors) {
sensor.second->activate(false);
@@ -106,6 +103,9 @@
// Hold the lock to ensure that re-creation of event flag is atomic
std::lock_guard<std::mutex> lock(mWriteLock);
+ mEventQueue = std::make_unique<AidlMessageQueue<Event, SynchronizedReadWrite>>(
+ in_eventQueueDescriptor, true /* resetPointers */);
+
// Ensure that any existing EventFlag is properly deleted
deleteEventFlagLocked();