diff options
author | Peng Xu <pengxu@google.com> | 2015-10-27 22:23:21 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-27 22:23:21 +0000 |
commit | a78c2e65e13cace4fdbb0295beca5b11de9fde06 (patch) | |
tree | 2294fd8567d8a388f79874011d14d47f75a3a3cd | |
parent | 574145ea31171a80c45f86eb231f55a2106826c4 (diff) | |
parent | 20483c49377fdb0330d9dfbbb2168b470c0b29d3 (diff) | |
download | frameworks_native-android-6.0.1_r9.zip frameworks_native-android-6.0.1_r9.tar.gz frameworks_native-android-6.0.1_r9.tar.bz2 |
Merge "Avoiding flush on-change sensors at subscription" into mnc-dr-devandroid-6.0.1_r9android-6.0.1_r8android-6.0.1_r7android-6.0.1_r3android-6.0.1_r13android-6.0.1_r12android-6.0.1_r11android-6.0.1_r10android-6.0.1_r1android-6.0.0_r41
-rw-r--r-- | services/sensorservice/SensorService.cpp | 13 |
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); |