diff options
author | Scott Lobdell <slobdell@google.com> | 2021-06-04 18:02:44 +0000 |
---|---|---|
committer | Scott Lobdell <slobdell@google.com> | 2021-06-04 18:02:44 +0000 |
commit | c85bde0398d2a185e66a61cdabd26e5435bb4807 (patch) | |
tree | 3d9efc2d95fccc971f519d1d323a19a4621683cd /gnss/aidl/default/GnssMeasurementInterface.cpp | |
parent | a01a9128380dad45a28f4740a57136a058eb9d12 (diff) | |
parent | e013dd1a8b8f0df65b20c4de224effa1a7fcc61b (diff) |
Merge SP1A.210604.001
Change-Id: I78feee65e602d45bb0e3e90536729623b0f3d4f5
Diffstat (limited to 'gnss/aidl/default/GnssMeasurementInterface.cpp')
-rw-r--r-- | gnss/aidl/default/GnssMeasurementInterface.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/gnss/aidl/default/GnssMeasurementInterface.cpp b/gnss/aidl/default/GnssMeasurementInterface.cpp index cae9499077..fcc1f986cc 100644 --- a/gnss/aidl/default/GnssMeasurementInterface.cpp +++ b/gnss/aidl/default/GnssMeasurementInterface.cpp @@ -69,24 +69,26 @@ void GnssMeasurementInterface::start(const bool enableCorrVecOutputs) { std::this_thread::sleep_for(std::chrono::milliseconds(mMinIntervalMillis)); } }); + mThread.detach(); } void GnssMeasurementInterface::stop() { ALOGD("stop"); mIsActive = false; - if (mThread.joinable()) { - mThread.join(); - } } void GnssMeasurementInterface::reportMeasurement(const GnssData& data) { ALOGD("reportMeasurement()"); - std::unique_lock<std::mutex> lock(mMutex); - if (sCallback == nullptr) { - ALOGE("%s: GnssMeasurement::sCallback is null.", __func__); - return; + std::shared_ptr<IGnssMeasurementCallback> callbackCopy; + { + std::unique_lock<std::mutex> lock(mMutex); + if (sCallback == nullptr) { + ALOGE("%s: GnssMeasurement::sCallback is null.", __func__); + return; + } + callbackCopy = sCallback; } - sCallback->gnssMeasurementCb(data); + callbackCopy->gnssMeasurementCb(data); } } // namespace aidl::android::hardware::gnss |