| 395 | } |
| 396 | |
| 397 | void __DSP_remove_task(DSPTaskInfo* task) |
| 398 | { |
| 399 | task->flags = DSP_TASK_FLAG_CLEARALL; |
| 400 | task->state = DSP_TASK_STATE_DONE; |
| 401 | |
| 402 | if (__DSP_first_task == task) |
| 403 | { |
| 404 | if (task->next) |
| 405 | { |
| 406 | __DSP_first_task = (task->next); |
| 407 | task->next->prev = NULL; |
| 408 | } |
| 409 | else |
| 410 | { |
| 411 | __DSP_first_task = __DSP_last_task = __DSP_curr_task = NULL; |
| 412 | } |
| 413 | } |
| 414 | else if (__DSP_last_task == task) |
| 415 | { |
| 416 | __DSP_last_task = (task->prev); |
| 417 | task->prev->next = NULL; |
| 418 | __DSP_curr_task = __DSP_first_task; |
| 419 | } |
| 420 | else |
| 421 | { |
| 422 | __DSP_curr_task = task->next; |
| 423 | task->prev->next = task->next; |
| 424 | task->next->prev = task->prev; |
| 425 | } |
| 426 | } |
| 427 | |
| 428 | // Unused, but close enough. |
| 429 | void __DSP_add_task(DSPTaskInfo* task) |