mirror of
https://github.com/LNH-team/pico-launcher.git
synced 2026-06-02 00:56:55 +02:00
42 lines
917 B
C++
42 lines
917 B
C++
#include "common.h"
|
|
#include "TaskQueue.h"
|
|
|
|
void TaskQueueBase::ThreadMain()
|
|
{
|
|
while (true)
|
|
{
|
|
_idle = false;
|
|
while (true)
|
|
{
|
|
u32 irqs = rtos_disableIrqs();
|
|
auto task = _taskList.GetHead();
|
|
if (!task)
|
|
{
|
|
rtos_restoreIrqs(irqs);
|
|
break;
|
|
}
|
|
_taskList.Remove(task);
|
|
task->Execute(irqs);
|
|
if (task->GetDestroyWhenComplete())
|
|
{
|
|
// this will destroy the task
|
|
ReturnOwnership(task);
|
|
}
|
|
}
|
|
if (_endThreadWhenDone)
|
|
return;
|
|
_idle = true;
|
|
rtos_waitEvent(&_event, false, true);
|
|
}
|
|
}
|
|
|
|
void QueueTaskBase::Dispose()
|
|
{
|
|
if (_task)
|
|
{
|
|
TaskBase* task = _task;
|
|
_task = nullptr;
|
|
_taskQueue->ReturnOwnership(task);
|
|
_taskQueue = nullptr;
|
|
}
|
|
} |