Merge "Switch away from std::async for proximity-active callback." into sc-dev am: c6ad94b675
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/14965036
Change-Id: I1a97c5aca977d8264223d24075dede7e56acf8d1
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index a1c800e..2281721 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -1626,19 +1626,17 @@
}
void SensorService::notifyProximityStateLocked(
- const std::vector<sp<ProximityActiveListener>>& listnrs) {
- std::async(
- std::launch::async,
- [](uint64_t mySeq, bool isActive, std::vector<sp<ProximityActiveListener>> listeners) {
- while (completedCallbackSeq.load() != mySeq - 1)
- std::this_thread::sleep_for(1ms);
- for (auto& listener : listeners)
- listener->onProximityActive(isActive);
- completedCallbackSeq++;
- },
- ++curProxCallbackSeq, mProximityActiveCount > 0,
- listnrs /* (this is meant to be a copy) */
- );
+ const std::vector<sp<ProximityActiveListener>>& listeners) {
+ const bool isActive = mProximityActiveCount > 0;
+ const uint64_t mySeq = ++curProxCallbackSeq;
+ std::thread t([isActive, mySeq, listenersCopy = listeners]() {
+ while (completedCallbackSeq.load() != mySeq - 1)
+ std::this_thread::sleep_for(1ms);
+ for (auto& listener : listenersCopy)
+ listener->onProximityActive(isActive);
+ completedCallbackSeq++;
+ });
+ t.detach();
}
status_t SensorService::addProximityActiveListener(const sp<ProximityActiveListener>& callback) {