Bug fix for wakeup sensors.
SensorService should hold a wakelock till the app reads events from a wakeup sensor. Currently drivers hold a wakelock with a timeout while delivering events from a wake up sensor like Significant Motion. This hack can be removed now. Bug: 9774884 Change-Id: I6cab0147c63f57a494a61f4dfe2a64a27dfe1b4e
This commit is contained in:
@@ -160,7 +160,6 @@ private:
|
||||
ASensorEvent buffer[16];
|
||||
while ((n = q->read(buffer, 16)) > 0) {
|
||||
for (int i=0 ; i<n ; i++) {
|
||||
|
||||
if (buffer[i].type == SENSOR_TYPE_STEP_COUNTER) {
|
||||
// step-counter returns a uint64, but the java API only deals with floats
|
||||
float value = float(buffer[i].u64.step_counter);
|
||||
@@ -183,17 +182,17 @@ private:
|
||||
buffer[i].vector.status,
|
||||
buffer[i].timestamp);
|
||||
}
|
||||
|
||||
if (env->ExceptionCheck()) {
|
||||
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;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -123,10 +123,13 @@ int ASensorEventQueue_hasEvents(ASensorEventQueue* queue)
|
||||
ssize_t ASensorEventQueue_getEvents(ASensorEventQueue* queue,
|
||||
ASensorEvent* events, size_t count)
|
||||
{
|
||||
return static_cast<SensorEventQueue*>(queue)->read(events, count);
|
||||
ssize_t actual = static_cast<SensorEventQueue*>(queue)->read(events, count);
|
||||
if (actual > 0) {
|
||||
static_cast<SensorEventQueue*>(queue)->sendAck(events, actual);
|
||||
}
|
||||
return actual;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
const char* ASensor_getName(ASensor const* sensor)
|
||||
|
||||
Reference in New Issue
Block a user