diff options
author | Brian Stack <bstack@google.com> | 2019-01-14 12:15:58 -0800 |
---|---|---|
committer | Brian Stack <bstack@google.com> | 2019-01-18 17:31:05 -0800 |
commit | 9da89b25ac424daad86f82ed0a2ea30b74af9f7c (patch) | |
tree | 1bcb29842dcf76b3cda4003c16287eb957ae2571 /native/android/sensor.cpp | |
parent | d46c3e29549fbea8797c1d7b82907ebc3771a00d (diff) |
Add ASensorEventQueue_requestAdditionalInfoEvents
Implements the ASensorEventQueue_requestAdditionalInfoEvents which
allows for a client to request additional information sensor events.
Bug: 77276247
Test: Verified additional information events are only delivered to NDK
clients that have explicitly requested them through the
ASensorEventQueue_requestAdditionalInfoEvents function
Change-Id: I304ba73908e5dd3eec61360d26e5321d442c6077
Diffstat (limited to 'native/android/sensor.cpp')
-rw-r--r-- | native/android/sensor.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/native/android/sensor.cpp b/native/android/sensor.cpp index c3b2e2526ea8..63082fd70bc6 100644 --- a/native/android/sensor.cpp +++ b/native/android/sensor.cpp @@ -115,6 +115,7 @@ ASensorEventQueue* ASensorManager_createEventQueue(ASensorManager* manager, if (queue != 0) { ALooper_addFd(looper, queue->getFd(), ident, ALOOPER_EVENT_INPUT, callback, data); queue->looper = looper; + queue->requestAdditionalInfo = false; queue->incStrong(manager); } return static_cast<ASensorEventQueue*>(queue.get()); @@ -274,11 +275,19 @@ ssize_t ASensorEventQueue_getEvents(ASensorEventQueue* queue, ASensorEvent* even return android::BAD_VALUE; } - ssize_t actual = static_cast<SensorEventQueue*>(queue)->read(events, count); + SensorEventQueue* sensorQueue = static_cast<SensorEventQueue*>(queue); + ssize_t actual = sensorQueue->read(events, count); if (actual > 0) { - static_cast<SensorEventQueue*>(queue)->sendAck(events, actual); + sensorQueue->sendAck(events, actual); } - return actual; + + return sensorQueue->filterEvents(events, actual); +} + +int ASensorEventQueue_requestAdditionalInfoEvents(ASensorEventQueue* queue, bool enable) { + RETURN_IF_QUEUE_IS_NULL(android::BAD_VALUE); + queue->requestAdditionalInfo = enable; + return android::OK; } /*****************************************************************************/ |