diff options
author | Aravind Akella <aakella@google.com> | 2014-03-06 02:35:17 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-03-06 02:35:17 +0000 |
commit | e7643e431abc2d1b42ab1d68913ec22d0b180554 (patch) | |
tree | e243fabf4ca5ca51cb286938c5100f7aa8331f0c /services | |
parent | 1d84e25648efcda02e53910530f59a3c3351f152 (diff) | |
parent | 8ae7c02e6ffb5533958d04ac0d8f4a8d77fdb734 (diff) | |
download | frameworks_native-e7643e431abc2d1b42ab1d68913ec22d0b180554.zip frameworks_native-e7643e431abc2d1b42ab1d68913ec22d0b180554.tar.gz frameworks_native-e7643e431abc2d1b42ab1d68913ec22d0b180554.tar.bz2 |
am 8ae7c02e: am ffac23b2: am 4b84704b: Ignore flush complete events when recording last value for a sensor.
* commit '8ae7c02e6ffb5533958d04ac0d8f4a8d77fdb734':
Ignore flush complete events when recording last value for a sensor.
Diffstat (limited to 'services')
-rw-r--r-- | services/sensorservice/SensorService.cpp | 23 | ||||
-rw-r--r-- | services/sensorservice/SensorService.h | 2 |
2 files changed, 13 insertions, 12 deletions
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index a2f4332..f6705f6 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -426,20 +426,21 @@ bool SensorService::threadLoop() } void SensorService::recordLastValue( - sensors_event_t const * buffer, size_t count) -{ + const sensors_event_t* 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; + const sensors_event_t* last = NULL; + for (size_t i = 0; i < count; i++) { + const sensors_event_t* event = &buffer[i]; + if (event->type != SENSOR_TYPE_META_DATA) { + if (last && event->sensor != last->sensor) { + mLastEventSeen.editValueFor(last->sensor) = *last; + } + last = event; } } - mLastEventSeen.editValueFor(prev) = buffer[count-1]; + if (last) { + mLastEventSeen.editValueFor(last->sensor) = *last; + } } void SensorService::sortEventBuffer(sensors_event_t* buffer, size_t count) diff --git a/services/sensorservice/SensorService.h b/services/sensorservice/SensorService.h index c968319..1dc2dd3 100644 --- a/services/sensorservice/SensorService.h +++ b/services/sensorservice/SensorService.h @@ -131,7 +131,7 @@ class SensorService : String8 getSensorName(int handle) const; bool isVirtualSensor(int handle) const; - void recordLastValue(sensors_event_t const * buffer, size_t count); + void recordLastValue(const sensors_event_t* buffer, size_t count); static void sortEventBuffer(sensors_event_t* buffer, size_t count); Sensor registerSensor(SensorInterface* sensor); Sensor registerVirtualSensor(SensorInterface* sensor); |