summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-11-29 11:42:32 -0800
committerMathias Agopian <mathias@google.com>2011-11-29 11:42:59 -0800
commitbb9ba8bae551305acba4f60577b0f461a9421bc5 (patch)
tree8a4ccf7b3a0a92232933f55dd2ab4ac591bc803e
parent3f15700a012b1ab0097eaf90caf0540ba6caa529 (diff)
downloadframeworks_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.cpp2
-rw-r--r--libs/gui/BitTube.cpp5
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;
}