fix a bug where timeouts would only be handled when a message was delivered

Change-Id: Id3127b21c1a1a1afab32911a8edbb202360d7c9b
This commit is contained in:
Mathias Agopian 2010-10-07 19:59:06 -07:00
parent 58959343db
commit 954fdd27ca
1 changed files with 11 additions and 7 deletions

View File

@ -91,17 +91,21 @@ sp<MessageBase> MessageQueue::waitMessage(nsecs_t timeout)
mMessages.remove(cur);
break;
}
if (timeout>=0 && timeoutTime < now) {
// we timed-out, return a NULL message
result = 0;
break;
}
nextEventTime = result->when;
result = 0;
}
if (timeout >= 0 && nextEventTime > 0) {
if (nextEventTime > timeoutTime) {
if (timeout >= 0) {
if (timeoutTime < now) {
// we timed-out, return a NULL message
result = 0;
break;
}
if (nextEventTime > 0) {
if (nextEventTime > timeoutTime) {
nextEventTime = timeoutTime;
}
} else {
nextEventTime = timeoutTime;
}
}