ogrebattle64/src/nu/nugfxthread.c

40 lines
1.0 KiB
C

#include "common.h"
#include "nu/nusys.h"
extern DECLARE_STACK(nuStackGfxThread, NU_GFX_STACK_SIZE);
/* 1B3E0 8008AFE0 */
void gfxThread(void* arg0) {
NUScClient gfxClient;
NUScMsg* mesgType;
s16 temp_v0;
osCreateMesgQueue(&nuGfxMesgQ, nuGfxMesgBuf, NU_GFX_MESGS);
nuScAddClient(&gfxClient, &nuGfxMesgQ, NU_SC_RETRACE_MSG | NU_SC_PRENMI_MSG);
while(1) {
osRecvMesg(&nuGfxMesgQ, (OSMesg)&mesgType, OS_MESG_BLOCK);
temp_v0 = *mesgType;
switch(temp_v0) {
case NU_SC_RETRACE_MSG:
if (nuGfxFunc != NULL) {
nuGfxFunc(nuGfxTaskSpool);
}
break;
case NU_SC_PRENMI_MSG:
if(nuGfxPreNMIFunc != NULL) {
nuGfxPreNMIFunc();
}
break;
}
}
}
void nuGfxThreadStart(void) {
osCreateThread(&nuGfxThread, 4, gfxThread, NULL, STACK_START(nuStackGfxThread), 0x32);
osStartThread(&nuGfxThread);
}