summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-11-10 10:33:55 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-11-10 10:33:55 -0800
commit785fd3685a69e5b3ef9c0958dcf4ae85f818e78d (patch)
tree4ef7499ecefe56ded4e16d9af87367718d408078 /services
parent843e04d977fd348ed474da1d3c6a62e7dc837444 (diff)
parent37d95f6f91713825ebb5edd6ce4e376fc093a750 (diff)
downloadframeworks_base-785fd3685a69e5b3ef9c0958dcf4ae85f818e78d.zip
frameworks_base-785fd3685a69e5b3ef9c0958dcf4ae85f818e78d.tar.gz
frameworks_base-785fd3685a69e5b3ef9c0958dcf4ae85f818e78d.tar.bz2
Merge "handle EINTR when calling sensor HAL's poll function" into ics-mr1
Diffstat (limited to 'services')
-rw-r--r--services/sensorservice/SensorDevice.cpp6
-rw-r--r--services/sensorservice/SensorService.cpp3
2 files changed, 7 insertions, 2 deletions
diff --git a/services/sensorservice/SensorDevice.cpp b/services/sensorservice/SensorDevice.cpp
index d82a7e2..7575ebd 100644
--- a/services/sensorservice/SensorDevice.cpp
+++ b/services/sensorservice/SensorDevice.cpp
@@ -166,7 +166,11 @@ status_t SensorDevice::initCheck() const {
ssize_t SensorDevice::poll(sensors_event_t* buffer, size_t count) {
if (!mSensorDevice) return NO_INIT;
- return mSensorDevice->poll(mSensorDevice, buffer, count);
+ ssize_t c;
+ do {
+ c = mSensorDevice->poll(mSensorDevice, buffer, count);
+ } while (c == -EINTR);
+ return c;
}
status_t SensorDevice::activate(void* ident, int handle, int enabled)
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index c2c6b4d..6202143 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -286,7 +286,8 @@ bool SensorService::threadLoop()
}
} while (count >= 0 || Thread::exitPending());
- LOGW("Exiting SensorService::threadLoop!");
+ LOGW("Exiting SensorService::threadLoop => aborting...");
+ abort();
return false;
}