runqueue should cal the complete handler from more places
[project/libubox.git] / runqueue.c
index 1bdb48e..189a005 100644 (file)
@@ -186,8 +186,6 @@ void runqueue_task_kill(struct runqueue_task *t)
        runqueue_task_complete(t);
        if (running && t->type->kill)
                t->type->kill(q, t);
-       if (t->complete)
-               t->complete(q, t);
 
        runqueue_start_next(q);
 }
@@ -205,6 +203,8 @@ void runqueue_resume(struct runqueue *q)
 
 void runqueue_task_complete(struct runqueue_task *t)
 {
+       struct runqueue *q = t->q;
+
        if (!t->queued)
                return;
 
@@ -215,6 +215,8 @@ void runqueue_task_complete(struct runqueue_task *t)
        t->queued = false;
        t->running = false;
        t->cancelled = false;
+       if (t->complete)
+               t->complete(q, t);
        runqueue_start_next(t->q);
 }