Import gx, PadClamp, rest of mtx, TRK 2.6 and MSL (#525)
* Match mtx and Padclamp.c * Match the rest of GX * Import TRK 2.6 * Import MSL headers and files * Merge some MSL headers into ours
This commit is contained in:
parent
a79294aac0
commit
cdb1d1fc37
113 changed files with 11219 additions and 394 deletions
72
src/TRK_MINNOW_DOLPHIN/nubevent.c
Normal file
72
src/TRK_MINNOW_DOLPHIN/nubevent.c
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h"
|
||||
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h"
|
||||
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h"
|
||||
#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h"
|
||||
|
||||
TRKEventQueue gTRKEventQueue;
|
||||
|
||||
DSError TRKInitializeEventQueue()
|
||||
{
|
||||
TRKInitializeMutex(&gTRKEventQueue);
|
||||
TRKAcquireMutex(&gTRKEventQueue);
|
||||
gTRKEventQueue.count = 0;
|
||||
gTRKEventQueue.next = 0;
|
||||
gTRKEventQueue.eventID = 0x100;
|
||||
TRKReleaseMutex(&gTRKEventQueue);
|
||||
return DS_NoError;
|
||||
}
|
||||
|
||||
void TRKCopyEvent(TRKEvent* dstEvent, const TRKEvent* srcEvent)
|
||||
{
|
||||
TRK_memcpy(dstEvent, srcEvent, sizeof(TRKEvent));
|
||||
}
|
||||
|
||||
BOOL TRKGetNextEvent(TRKEvent* event)
|
||||
{
|
||||
BOOL status = 0;
|
||||
TRKAcquireMutex(&gTRKEventQueue);
|
||||
if (0 < gTRKEventQueue.count) {
|
||||
TRKCopyEvent(event, &gTRKEventQueue.events[gTRKEventQueue.next]);
|
||||
gTRKEventQueue.count--;
|
||||
gTRKEventQueue.next++;
|
||||
if (gTRKEventQueue.next == 2)
|
||||
gTRKEventQueue.next = 0;
|
||||
|
||||
status = 1;
|
||||
}
|
||||
TRKReleaseMutex(&gTRKEventQueue);
|
||||
return status;
|
||||
}
|
||||
|
||||
DSError TRKPostEvent(TRKEvent* event)
|
||||
{
|
||||
DSError ret = DS_NoError;
|
||||
int nextEventID;
|
||||
|
||||
TRKAcquireMutex(&gTRKEventQueue);
|
||||
|
||||
if (gTRKEventQueue.count == 2) {
|
||||
ret = DS_EventQueueFull;
|
||||
} else {
|
||||
nextEventID = (gTRKEventQueue.next + gTRKEventQueue.count) % 2;
|
||||
TRKCopyEvent(&gTRKEventQueue.events[nextEventID], event);
|
||||
gTRKEventQueue.events[nextEventID].eventID = gTRKEventQueue.eventID;
|
||||
gTRKEventQueue.eventID++;
|
||||
if (gTRKEventQueue.eventID < 0x100)
|
||||
gTRKEventQueue.eventID = 0x100;
|
||||
|
||||
gTRKEventQueue.count++;
|
||||
}
|
||||
|
||||
TRKReleaseMutex(&gTRKEventQueue);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void TRKConstructEvent(TRKEvent* event, NubEventType eventType)
|
||||
{
|
||||
event->eventType = eventType;
|
||||
event->eventID = 0;
|
||||
event->msgBufID = -1;
|
||||
}
|
||||
|
||||
void TRKDestructEvent(TRKEvent* event) { TRKReleaseBuffer(event->msgBufID); }
|
||||
Loading…
Add table
Add a link
Reference in a new issue