diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp index 7a4728d6ef6b8..fcf8f83e3b07c 100644 --- a/core/jni/android_hardware_SensorManager.cpp +++ b/core/jni/android_hardware_SensorManager.cpp @@ -160,7 +160,6 @@ private: ASensorEvent buffer[16]; while ((n = q->read(buffer, 16)) > 0) { for (int i=0 ; iExceptionCheck()) { + mSensorQueue->sendAck(buffer, n); ALOGE("Exception dispatching input event."); return 1; } } + mSensorQueue->sendAck(buffer, n); } if (n<0 && n != -EAGAIN) { // FIXME: error receiving events, what to do in this case? } - return 1; } }; diff --git a/native/android/sensor.cpp b/native/android/sensor.cpp index fb4de9e783683..acfcd836bbb8c 100644 --- a/native/android/sensor.cpp +++ b/native/android/sensor.cpp @@ -123,10 +123,13 @@ int ASensorEventQueue_hasEvents(ASensorEventQueue* queue) ssize_t ASensorEventQueue_getEvents(ASensorEventQueue* queue, ASensorEvent* events, size_t count) { - return static_cast(queue)->read(events, count); + ssize_t actual = static_cast(queue)->read(events, count); + if (actual > 0) { + static_cast(queue)->sendAck(events, actual); + } + return actual; } - /*****************************************************************************/ const char* ASensor_getName(ASensor const* sensor)