summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Xu <pengxu@google.com>2015-10-27 22:23:21 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-10-27 22:23:21 +0000
commita78c2e65e13cace4fdbb0295beca5b11de9fde06 (patch)
tree2294fd8567d8a388f79874011d14d47f75a3a3cd
parent574145ea31171a80c45f86eb231f55a2106826c4 (diff)
parent20483c49377fdb0330d9dfbbb2168b470c0b29d3 (diff)
downloadframeworks_native-a78c2e65e13cace4fdbb0295beca5b11de9fde06.zip
frameworks_native-a78c2e65e13cace4fdbb0295beca5b11de9fde06.tar.gz
frameworks_native-a78c2e65e13cace4fdbb0295beca5b11de9fde06.tar.bz2
-rw-r--r--services/sensorservice/SensorService.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index 40b21a9..fd72b23 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -912,10 +912,15 @@ status_t SensorService::enable(const sp<SensorEventConnection>& connection,
status_t err = sensor->batch(connection.get(), handle, 0, samplingPeriodNs,
maxBatchReportLatencyNs);
- // Call flush() before calling activate() on the sensor. Wait for a first flush complete
- // event before sending events on this connection. Ignore one-shot sensors which don't
- // support flush(). Also if this sensor isn't already active, don't call flush().
- if (err == NO_ERROR && sensor->getSensor().getReportingMode() != AREPORTING_MODE_ONE_SHOT &&
+ // Call flush() before calling activate() on the sensor. Wait for a first
+ // flush complete event before sending events on this connection. Ignore
+ // one-shot sensors which don't support flush(). Ignore on-change sensors
+ // to maintain the on-change logic (any on-change events except the initial
+ // one should be trigger by a change in value). Also if this sensor isn't
+ // already active, don't call flush().
+ if (err == NO_ERROR &&
+ sensor->getSensor().getReportingMode() != AREPORTING_MODE_ONE_SHOT &&
+ sensor->getSensor().getReportingMode() != AREPORTING_MODE_ON_CHANGE &&
rec->getNumConnections() > 1) {
connection->setFirstFlushPending(handle, true);
status_t err_flush = sensor->flush(connection.get(), handle);