]> oss.titaniummirror.com Git - rgblamp.git/blobdiff - task.c
These changes save 685 code words
[rgblamp.git] / task.c
diff --git a/task.c b/task.c
index bce2b6dbaf30e59a4b3bb7ab25dfe75a3c02ede3..d704d60bd850d6042c95641b5eaeb897af8d8dab 100644 (file)
--- a/task.c
+++ b/task.c
@@ -36,22 +36,24 @@ task_id_t task_get(unsigned char block)
     nei();
     if (ids) {
       for (unsigned char i = 0; t == -1 && i < TASK_COUNT; i++) {
-        if (bit_get(ids, _task_bitno))
+        if (bit_get(ids, _task_bitno)) {
           t = _task_bitno;
+          ndi();
+          bit_clr(_task_ids, t);
+          nei();
+        }
         if (++_task_bitno == TASK_COUNT)
           _task_bitno = 0;
       }
     }
-#if 0 /* Not until we have a crystal and can wake from sleep via tmr module */
+#if 0
+    /* Something like this when we have a crystal.  But watch for the race of
+     * going to sleep when a task is posted by an ISR.
+     */
     else
       SLEEP();
 #endif
   } while (t == -1 && block == 1);
-  if (t >= 0) {
-    ndi();
-    bit_clr(_task_ids, t);
-    nei();
-  }
   return t;
 }