Don't wait forever if there are no commands to execute.
BUG=5614887
This fixes a timing issue where we could calculate a delay of 0 (indicating
wait forever) when we have no pending commands to actually execute. In such
cases, we should just break out of the playback loop.
This also fixes a small issue with returning whether or not to redraw.
Change-Id: Id1e481679341773256b7287062c68925e2bc8f9e
diff --git a/rsThreadIO.cpp b/rsThreadIO.cpp
index 8ba1a0e..1917774 100644
--- a/rsThreadIO.cpp
+++ b/rsThreadIO.cpp
@@ -124,7 +124,6 @@
while (!mToCore.isEmpty() || waitForCommand) {
uint32_t cmdID = 0;
uint32_t cmdSize = 0;
- ret = true;
if (con->props.mLogTimes) {
con->timerSet(Context::RS_TIMER_IDLE);
}
@@ -136,11 +135,17 @@
delay = 0;
}
}
+
+ if (delay == 0 && timeToWait != 0 && mToCore.isEmpty()) {
+ break;
+ }
+
const void * data = mToCore.get(&cmdID, &cmdSize, delay);
if (!cmdSize) {
// exception or timeout occurred.
- return false;
+ break;
}
+ ret = true;
if (con->props.mLogTimes) {
con->timerSet(Context::RS_TIMER_INTERNAL);
}