summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2010-11-11 14:52:37 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2010-11-11 14:52:37 -0800
commite1ccfb7f6e63f639988d9b50f060612f96c49c3f (patch)
tree0a1059aee49f5e68bdbe3ab6f1294989c83ea63f
parentd781089731127bd9199d47f53b170895868b8750 (diff)
parent792b847ee117c3c21b2859635caa7e7ec39d9c20 (diff)
downloadframeworks_base-e1ccfb7f6e63f639988d9b50f060612f96c49c3f.zip
frameworks_base-e1ccfb7f6e63f639988d9b50f060612f96c49c3f.tar.gz
frameworks_base-e1ccfb7f6e63f639988d9b50f060612f96c49c3f.tar.bz2
am 792b847e: am fcab475c: Merge "record the last event received regardless of having clients or not" into gingerbread
* commit '792b847ee117c3c21b2859635caa7e7ec39d9c20': record the last event received regardless of having clients or not
-rw-r--r--services/sensorservice/SensorService.cpp34
-rw-r--r--services/sensorservice/SensorService.h2
2 files changed, 22 insertions, 14 deletions
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index c9ab992..b5e73ac 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -218,25 +218,13 @@ bool SensorService::threadLoop()
break;
}
+ recordLastValue(buffer, count);
+
const SortedVector< wp<SensorEventConnection> > activeConnections(
getActiveConnections());
size_t numConnections = activeConnections.size();
if (numConnections) {
- Mutex::Autolock _l(mLock);
-
- // record the last event for each sensor
- int32_t prev = buffer[0].sensor;
- for (ssize_t i=1 ; i<count ; i++) {
- // record the last event of each sensor type in this buffer
- int32_t curr = buffer[i].sensor;
- if (curr != prev) {
- mLastEventSeen.editValueFor(prev) = buffer[i-1];
- prev = curr;
- }
- }
- mLastEventSeen.editValueFor(prev) = buffer[count-1];
-
for (size_t i=0 ; i<numConnections ; i++) {
sp<SensorEventConnection> connection(activeConnections[i].promote());
if (connection != 0) {
@@ -251,6 +239,24 @@ bool SensorService::threadLoop()
return false;
}
+void SensorService::recordLastValue(
+ sensors_event_t const * buffer, size_t count)
+{
+ Mutex::Autolock _l(mLock);
+
+ // record the last event for each sensor
+ int32_t prev = buffer[0].sensor;
+ for (size_t i=1 ; i<count ; i++) {
+ // record the last event of each sensor type in this buffer
+ int32_t curr = buffer[i].sensor;
+ if (curr != prev) {
+ mLastEventSeen.editValueFor(prev) = buffer[i-1];
+ prev = curr;
+ }
+ }
+ mLastEventSeen.editValueFor(prev) = buffer[count-1];
+}
+
SortedVector< wp<SensorService::SensorEventConnection> >
SensorService::getActiveConnections() const
{
diff --git a/services/sensorservice/SensorService.h b/services/sensorservice/SensorService.h
index dfb1c0e..b442779 100644
--- a/services/sensorservice/SensorService.h
+++ b/services/sensorservice/SensorService.h
@@ -111,6 +111,8 @@ class SensorService :
String8 getSensorName(int handle) const;
status_t recomputeEventsPeriodLocked(int32_t handle);
+ void recordLastValue(sensors_event_t const * buffer, size_t count);
+
// constants
Vector<Sensor> mSensorList;
struct sensors_poll_device_t* mSensorDevice;