From 954fdd27ca1420aadc51c2752072a81a2e9bcb3c Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Thu, 7 Oct 2010 19:59:06 -0700 Subject: [PATCH] fix a bug where timeouts would only be handled when a message was delivered Change-Id: Id3127b21c1a1a1afab32911a8edbb202360d7c9b --- services/surfaceflinger/MessageQueue.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/services/surfaceflinger/MessageQueue.cpp b/services/surfaceflinger/MessageQueue.cpp index d668e88d4..4fb1e6133 100644 --- a/services/surfaceflinger/MessageQueue.cpp +++ b/services/surfaceflinger/MessageQueue.cpp @@ -91,17 +91,21 @@ sp 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; } }