am b04e02b9: am 3a77d009: am 2376bd68: Merge "Bug fix in SensorManager." into mnc-dev

* commit 'b04e02b9f70b7a26d1a8dc5927e4fca51168a759':
  Bug fix in SensorManager.
This commit is contained in:
Aravind Akella 2015-07-29 01:23:29 +00:00 committed by Android Git Automerger
commit e622edebfb
2 changed files with 11 additions and 4 deletions

View File

@ -101,7 +101,6 @@ public:
return *sensorManager; return *sensorManager;
} }
SensorManager(const String16& opPackageName);
~SensorManager(); ~SensorManager();
ssize_t getSensorList(Sensor const* const** list) const; ssize_t getSensorList(Sensor const* const** list) const;
@ -113,6 +112,7 @@ private:
// DeathRecipient interface // DeathRecipient interface
void sensorManagerDied(); void sensorManagerDied();
SensorManager(const String16& opPackageName);
status_t assertStateLocked() const; status_t assertStateLocked() const;
private: private:
@ -127,6 +127,8 @@ private:
const String16 mOpPackageName; const String16 mOpPackageName;
}; };
android::Mutex android::SensorManager::sLock;
std::map<String16, SensorManager*> android::SensorManager::sPackageInstances;
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
}; // namespace android }; // namespace android

View File

@ -59,12 +59,13 @@ void SensorManager::sensorManagerDied()
status_t SensorManager::assertStateLocked() const { status_t SensorManager::assertStateLocked() const {
if (mSensorServer == NULL) { if (mSensorServer == NULL) {
// try for one second
const String16 name("sensorservice"); const String16 name("sensorservice");
for (int i=0 ; i<4 ; i++) { // try 10 times before giving up ...
for (int i = 0; i < 10; ++i) {
status_t err = getService(name, &mSensorServer); status_t err = getService(name, &mSensorServer);
if (err == NAME_NOT_FOUND) { if (err == NAME_NOT_FOUND) {
usleep(250000); // Sleep for 1 second before retrying.
sleep(1);
continue; continue;
} }
if (err != NO_ERROR) { if (err != NO_ERROR) {
@ -73,6 +74,10 @@ status_t SensorManager::assertStateLocked() const {
break; break;
} }
if (mSensorServer == NULL) {
ALOGE("FATAL getsensorservice returned` NULL");
}
class DeathObserver : public IBinder::DeathRecipient { class DeathObserver : public IBinder::DeathRecipient {
SensorManager& mSensorManger; SensorManager& mSensorManger;
virtual void binderDied(const wp<IBinder>& who) { virtual void binderDied(const wp<IBinder>& who) {