diff options
author | Mathias Agopian <mathias@google.com> | 2011-11-29 11:42:32 -0800 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2011-11-29 11:42:59 -0800 |
commit | bb9ba8bae551305acba4f60577b0f461a9421bc5 (patch) | |
tree | 8a4ccf7b3a0a92232933f55dd2ab4ac591bc803e | |
parent | 3f15700a012b1ab0097eaf90caf0540ba6caa529 (diff) | |
download | frameworks_base-bb9ba8bae551305acba4f60577b0f461a9421bc5.zip frameworks_base-bb9ba8bae551305acba4f60577b0f461a9421bc5.tar.gz frameworks_base-bb9ba8bae551305acba4f60577b0f461a9421bc5.tar.bz2 |
BitTube::read now handles EAGAIN
Change-Id: Iacda2386342ba0727bbf278f6c597488d5467bb8
-rw-r--r-- | core/jni/android_hardware_SensorManager.cpp | 2 | ||||
-rw-r--r-- | libs/gui/BitTube.cpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp index 10ceb7b..202abf6 100644 --- a/core/jni/android_hardware_SensorManager.cpp +++ b/core/jni/android_hardware_SensorManager.cpp @@ -126,7 +126,7 @@ sensors_data_poll(JNIEnv *env, jclass clazz, jint nativeQueue, ASensorEvent event; res = queue->read(&event, 1); - if (res == -EAGAIN) { + if (res == 0) { res = queue->waitForEvent(); if (res != NO_ERROR) return -1; diff --git a/libs/gui/BitTube.cpp b/libs/gui/BitTube.cpp index c632b43..fa8d0ea 100644 --- a/libs/gui/BitTube.cpp +++ b/libs/gui/BitTube.cpp @@ -97,6 +97,11 @@ ssize_t BitTube::read(void* vaddr, size_t size) len = ::read(mReceiveFd, vaddr, size); err = len < 0 ? errno : 0; } while (err == EINTR); + if (err == EAGAIN || err == EWOULDBLOCK) { + // EAGAIN means that we have non-blocking I/O but there was + // no data to be read. Nothing the client should care about. + return 0; + } return err == 0 ? len : -err; } |