diff --git a/src/_ob_past_brick.c b/src/_ob_past_brick.c index c3d4b33..dc89688 100644 --- a/src/_ob_past_brick.c +++ b/src/_ob_past_brick.c @@ -35,7 +35,26 @@ void nuScAddClient(NUScClient* client, OSMesgQueue* queue, NUScMsg type) { INCLUDE_ASM(const s32, "_ob_past_brick", func_800890E4); -INCLUDE_ASM(const s32, "_ob_past_brick", nuScRemoveClient); +void nuScRemoveClient(NUScClient* client) { + s32 mask = osSetIntMask(OS_IM_NONE); + NUScClient* clientList = nusched.clientList; + NUScClient* prev = NULL; + + while (clientList != NULL) { + if (clientList == client) { + if (prev != NULL) { + prev->next = clientList->next; + } else { + nusched.clientList = clientList->next; + } + break; + } + prev = clientList; + clientList = clientList->next; + } + + osSetIntMask(mask); +} INCLUDE_ASM(const s32, "_ob_past_brick", nuScEventBroadcast);