diff options
author | Anthony Stange <stange@google.com> | 2023-03-01 19:40:38 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-03-01 19:40:38 +0000 |
commit | 7eee112d06a5747b14d7dd1f03f88730bf3a6e60 (patch) | |
tree | fd2199d619ab16fbb379e3a8255f6a8954efd801 | |
parent | 5662dac29e8bfd744958507c12031b960c3512c4 (diff) | |
parent | dd5384d875d0f56c201792b373f8fa4f69966531 (diff) | |
download | native-7eee112d06a5747b14d7dd1f03f88730bf3a6e60.tar.gz |
Add removeInstanceForPackageMethod to SensorManager am: dd5384d875
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/21548276
Change-Id: I746923a89e43ac68482f0258a239741536c0d923
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | libs/sensor/SensorManager.cpp | 10 | ||||
-rw-r--r-- | libs/sensor/include/sensor/SensorManager.h | 1 | ||||
-rw-r--r-- | services/sensorservice/hidl/SensorManager.cpp | 3 |
3 files changed, 14 insertions, 0 deletions
diff --git a/libs/sensor/SensorManager.cpp b/libs/sensor/SensorManager.cpp index 625612c0c9..cc5bcd8422 100644 --- a/libs/sensor/SensorManager.cpp +++ b/libs/sensor/SensorManager.cpp @@ -92,6 +92,16 @@ SensorManager& SensorManager::getInstanceForPackage(const String16& packageName) return *sensorManager; } +void SensorManager::removeInstanceForPackage(const String16& packageName) { + Mutex::Autolock _l(sLock); + auto iterator = sPackageInstances.find(packageName); + if (iterator != sPackageInstances.end()) { + SensorManager* sensorManager = iterator->second; + delete sensorManager; + sPackageInstances.erase(iterator); + } +} + SensorManager::SensorManager(const String16& opPackageName) : mSensorList(nullptr), mOpPackageName(opPackageName), mDirectConnectionHandle(1) { Mutex::Autolock _l(mLock); diff --git a/libs/sensor/include/sensor/SensorManager.h b/libs/sensor/include/sensor/SensorManager.h index 09ac7edf27..b2a9e1eb1b 100644 --- a/libs/sensor/include/sensor/SensorManager.h +++ b/libs/sensor/include/sensor/SensorManager.h @@ -54,6 +54,7 @@ class SensorManager : public ASensorManager { public: static SensorManager& getInstanceForPackage(const String16& packageName); + static void removeInstanceForPackage(const String16& packageName); ~SensorManager(); ssize_t getSensorList(Sensor const* const** list); diff --git a/services/sensorservice/hidl/SensorManager.cpp b/services/sensorservice/hidl/SensorManager.cpp index 938060063f..0a4e68412d 100644 --- a/services/sensorservice/hidl/SensorManager.cpp +++ b/services/sensorservice/hidl/SensorManager.cpp @@ -60,6 +60,9 @@ SensorManager::~SensorManager() { if (mPollThread.joinable()) { mPollThread.join(); } + + ::android::SensorManager::removeInstanceForPackage( + String16(ISensorManager::descriptor)); } // Methods from ::android::frameworks::sensorservice::V1_0::ISensorManager follow. |