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);
         }