JD2022-TU1/main/extern/Raki/Source/RakiTests/_Wii/System/RakiThreadWii.cpp

62 lines
945 B
C++

#include "Precompiled.h"
#include "RakiEngine/System/RakiThread.h"
#include "RakiEngine/System/ThreadBase/ThreadBase.h"
namespace raki
{
#define STACK_SIZE (0x200*8)
#define PRIORITY 2
static u8 s_stack[STACK_SIZE] ATTRIBUTE_ALIGN(32);
static bool s_used = false;
OSThread th;
static void * uniqueThread( void * _data )
{
RAKI_ASSERT( _data );
ThreadBase * object = (ThreadBase*) _data;
Thread::theThread( object );
return NULL;
}
void Thread::theThread( ThreadBase * _object )
{
_object->internalRun();
s_used = true;
}
bool Thread::beginThread( ThreadBase * _object )
{
OSCreateThread( &th, uniqueThread, _object,
s_stack + STACK_SIZE, STACK_SIZE,
PRIORITY, OS_THREAD_ATTR_DETACH);
OSResumeThread(&th);
return true;
}
void Thread::sleep( u32 _milliseconds )
{
OSSleepMilliseconds( _milliseconds );
}
}