summaryrefslogtreecommitdiff
path: root/libs/sensor/SensorManager.cpp
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2023-05-26 09:16:56 -0700
committerLinux Build Service Account <lnxbuild@localhost>2023-05-26 09:16:56 -0700
commit680130833d55712bffdd1b6232d61a6eff6f3349 (patch)
tree558cf32b2bf0a385f178d4a3a41ad1b2bc57a9c8 /libs/sensor/SensorManager.cpp
parentd55c299fa9a84b243642c1308b93309b325f39c8 (diff)
parent5181b072dad551dfade8e6a1c3b888169699de90 (diff)
Merge 5181b072dad551dfade8e6a1c3b888169699de90 on remote branch
Change-Id: Ie59bfc7ac92d87da64b593c4cd86af842f19355a
Diffstat (limited to 'libs/sensor/SensorManager.cpp')
-rw-r--r--libs/sensor/SensorManager.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/libs/sensor/SensorManager.cpp b/libs/sensor/SensorManager.cpp
index 0ba9704263..40061cde61 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);
@@ -166,6 +176,11 @@ status_t SensorManager::assertStateLocked() {
mSensors = mSensorServer->getSensorList(mOpPackageName);
size_t count = mSensors.size();
+ if (count == 0) {
+ ALOGE("Failed to get Sensor list");
+ mSensorServer.clear();
+ return UNKNOWN_ERROR;
+ }
mSensorList =
static_cast<Sensor const**>(malloc(count * sizeof(Sensor*)));
LOG_ALWAYS_FATAL_IF(mSensorList == nullptr, "mSensorList NULL");