summaryrefslogtreecommitdiff
path: root/android/aidl-impl/Gnss.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'android/aidl-impl/Gnss.cpp')
-rw-r--r--android/aidl-impl/Gnss.cpp11
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();