diff options
Diffstat (limited to 'android/aidl-impl/Gnss.cpp')
-rw-r--r-- | android/aidl-impl/Gnss.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/android/aidl-impl/Gnss.cpp b/android/aidl-impl/Gnss.cpp index 9dcb1bb..4e2c2e6 100644 --- a/android/aidl-impl/Gnss.cpp +++ b/android/aidl-impl/Gnss.cpp @@ -34,9 +34,8 @@ namespace implementation { void gnssCallbackDied(void* cookie) { LOC_LOGe("IGnssCallback AIDL service died"); Gnss* iface = static_cast<Gnss*>(cookie); - //clean up, i.e. iface->close(); if (iface != nullptr) { - iface->close(); + iface->handleClientDeath(); } } ndk::ScopedAStatus Gnss::setCallback(const std::shared_ptr<IGnssCallback>& callback) { @@ -82,6 +81,14 @@ Gnss::~Gnss() { } } +void Gnss::handleClientDeath() { + close(); + if (mApi != nullptr) { + mApi->gnssUpdateCallbacks(mGnssCallback); + } + mGnssCallback = nullptr; +} + ndk::ScopedAStatus Gnss::updateConfiguration(GnssConfig& gnssConfig) { ENTRY_LOG_CALLFLOW(); GnssAPIClient* api = getApi(); |