summaryrefslogtreecommitdiffstats
path: root/include/gui
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-10-16 22:15:23 -0700
committerMathias Agopian <mathias@google.com>2011-10-16 22:15:23 -0700
commitde6c44e90681cbdb754e55721953fc828ec8e2aa (patch)
tree9cd3aeef0b48317abda405f001bea32157cd8af6 /include/gui
parent4fb6416e3a21031a88921a784ae62b13d8a1a39f (diff)
downloadframeworks_base-de6c44e90681cbdb754e55721953fc828ec8e2aa.zip
frameworks_base-de6c44e90681cbdb754e55721953fc828ec8e2aa.tar.gz
frameworks_base-de6c44e90681cbdb754e55721953fc828ec8e2aa.tar.bz2
SensorManager reconnects to sensor service when the later dies
if system process ever restarted, processes using a SensorManager would loose the ability to use it, resulting to a crash. we now listen for sensor service death and reconnected if necessary. Bug: 5445240 Change-Id: Ia47f8b26cdcecb729fa22bf11d55e10fcaef8cfc
Diffstat (limited to 'include/gui')
-rw-r--r--include/gui/SensorManager.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/include/gui/SensorManager.h b/include/gui/SensorManager.h
index e1b1a7b..3176462 100644
--- a/include/gui/SensorManager.h
+++ b/include/gui/SensorManager.h
@@ -20,6 +20,8 @@
#include <stdint.h>
#include <sys/types.h>
+#include <binder/IBinder.h>
+
#include <utils/Errors.h>
#include <utils/RefBase.h>
#include <utils/Singleton.h>
@@ -41,7 +43,9 @@ class SensorEventQueue;
// ----------------------------------------------------------------------------
-class SensorManager : public ASensorManager, public Singleton<SensorManager>
+class SensorManager :
+ public ASensorManager,
+ public Singleton<SensorManager>
{
public:
SensorManager();
@@ -52,9 +56,17 @@ public:
sp<SensorEventQueue> createEventQueue();
private:
- sp<ISensorServer> mSensorServer;
- Sensor const** mSensorList;
- Vector<Sensor> mSensors;
+ // DeathRecipient interface
+ void sensorManagerDied();
+
+ status_t assertStateLocked() const;
+
+private:
+ mutable Mutex mLock;
+ mutable sp<ISensorServer> mSensorServer;
+ mutable Sensor const** mSensorList;
+ mutable Vector<Sensor> mSensors;
+ mutable sp<IBinder::DeathRecipient> mDeathObserver;
};
// ----------------------------------------------------------------------------