Make scheduler pass message IDs instead of pointers

This commit is contained in:
Ryan Dwyer 2023-05-03 23:26:44 +10:00
parent 6b016ffd4f
commit e423eac69e
3 changed files with 12 additions and 15 deletions

View File

@ -152,7 +152,7 @@ void amgrMain(void *arg)
{
s32 count = 0;
bool done = false;
s16 *msg = NULL;
s32 msg = 0;
AudioInfo *info = NULL;
static u32 var8005d514 = 1;
@ -162,7 +162,7 @@ void amgrMain(void *arg)
while (!done) {
osRecvMesg(&g_AudioManager.audioFrameMsgQ, (OSMesg *) &msg, OS_MESG_BLOCK);
switch (*msg) {
switch (msg) {
case OS_SC_RSP_MSG:
var80091588 = osGetTime();
profileStart(PROFILEMARKER_AUDIO);

View File

@ -225,8 +225,7 @@ void mainInit(void)
}
{
OSMesg receivedmsg = NULL;
OSScMsg scdonemsg = { OS_SC_DONE_MSG };
s32 receivedmsg = 0;
u16 *texture;
s32 numpages;
u8 scratch[1024 * 5 - 8];
@ -310,20 +309,18 @@ void mainInit(void)
g_RdpOutBufferStart = texture;
g_RdpOutBufferEnd = texture + 0x400; // 0x800 bytes, because texture is u16
while (osRecvMesg(&g_SchedMesgQueue, &receivedmsg, OS_MESG_NOBLOCK) == 0) {
while (osRecvMesg(&g_SchedMesgQueue, (OSMesg) &receivedmsg, OS_MESG_NOBLOCK) == 0) {
// empty
}
j = 0;
while (j < 6) {
osRecvMesg(&g_SchedMesgQueue, &receivedmsg, OS_MESG_BLOCK);
osRecvMesg(&g_SchedMesgQueue, (OSMesg) &receivedmsg, OS_MESG_BLOCK);
i = (s32) &scdonemsg;
if (*(s16 *) receivedmsg == 1) {
if (receivedmsg == OS_SC_RETRACE_MSG) {
viUpdateMode();
rdpCreateTask(var8005dcc8, var8005dcf0, 0, (void *) i);
rdpCreateTask(var8005dcc8, var8005dcf0, 0, (OSMesg) OS_SC_DONE_MSG);
j++;
}
}
@ -403,7 +400,6 @@ void mainProc(void)
void mainLoop(void)
{
s32 ending = false;
OSScMsg msg2 = {OS_SC_DONE_MSG};
OSMesg msg;
s32 index;
s32 numplayers;
@ -569,6 +565,8 @@ void mainLoop(void)
osRecvMesg(&g_SchedMesgQueue, &msg, OS_MESG_BLOCK);
switch ((s32) msg) {
case OS_SC_RETRACE_MSG:
break;
case OS_SC_DONE_MSG:
g_MainNumGfxTasks--;
break;
@ -653,7 +651,7 @@ void mainTick(void)
gfxSwapBuffers();
viUpdateMode();
rdpCreateTask(gdlstart, gdl, 0, (void *) OS_SC_DONE_MSG);
rdpCreateTask(gdlstart, gdl, 0, (OSMesg) OS_SC_DONE_MSG);
g_MainNumGfxTasks++;
}

View File

@ -45,7 +45,6 @@ s32 g_ViShakeIntensity = 0;
s32 g_ViShakeTimer = 0;
u32 var8005cea0 = 0;
u32 var8005cea4 = 0;
OSScMsg g_SchedRspMsg = {OS_SC_RSP_MSG};
bool g_SchedIsFirstTask = true;
static void __scExec(OSSched *sc, OSScTask *t)
@ -181,7 +180,7 @@ static void __scHandleRetrace(OSSched *sc)
*/
if (sc->alt && !g_Resetting) {
osStopTimer(&g_SchedRspTimer);
osSetTimer(&g_SchedRspTimer, 280000, 0, amgrGetFrameMesgQueue(), &g_SchedRspMsg);
osSetTimer(&g_SchedRspTimer, 280000, 0, amgrGetFrameMesgQueue(), (OSMesg) OS_SC_RSP_MSG);
if (sc->nextAudTask && sc->curRSPTask->list.t.type == M_GFXTASK) {
osSpTaskYield();
@ -196,7 +195,7 @@ static void __scHandleRetrace(OSSched *sc)
joysTick();
if (sc->gfxmq) {
osSendMesg(sc->gfxmq, (OSMesg) &sc->retraceMsg, OS_MESG_NOBLOCK);
osSendMesg(sc->gfxmq, (OSMesg) OS_SC_RETRACE_MSG, OS_MESG_NOBLOCK);
}
}