mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-05-24 15:20:38 -04:00
Make scheduler pass message IDs instead of pointers
This commit is contained in:
+2
-2
@@ -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);
|
||||
|
||||
+8
-10
@@ -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++;
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user