diff options
author | Mathias Agopian <mathias@google.com> | 2011-11-10 10:33:55 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-11-10 10:33:55 -0800 |
commit | 785fd3685a69e5b3ef9c0958dcf4ae85f818e78d (patch) | |
tree | 4ef7499ecefe56ded4e16d9af87367718d408078 /services | |
parent | 843e04d977fd348ed474da1d3c6a62e7dc837444 (diff) | |
parent | 37d95f6f91713825ebb5edd6ce4e376fc093a750 (diff) | |
download | frameworks_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.cpp | 6 | ||||
-rw-r--r-- | services/sensorservice/SensorService.cpp | 3 |
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; } |