Use threadsafe events for GE communication.

Hopefully this doesn't cause problems again for 3rd Birthday or FF Type-0.
Kinda need it.
This commit is contained in:
Unknown W. Brackets 2013-08-05 00:25:55 -07:00
parent 7dfee29d49
commit b298432e8f

View file

@ -199,11 +199,11 @@ bool __GeTriggerSync(WaitType waitType, int id, u64 atTicks)
s64 future = atTicks - CoreTiming::GetTicks();
if (waitType == WAITTYPE_GEDRAWSYNC)
{
s64 left = CoreTiming::UnscheduleEvent(geSyncEvent, userdata);
s64 left = CoreTiming::UnscheduleThreadsafeEvent(geSyncEvent, userdata);
if (left > future)
future = left;
}
CoreTiming::ScheduleEvent(future, geSyncEvent, userdata);
CoreTiming::ScheduleEvent_Threadsafe(future, geSyncEvent, userdata);
return true;
}
@ -211,7 +211,7 @@ bool __GeTriggerSync(WaitType waitType, int id, u64 atTicks)
bool __GeTriggerInterrupt(int listid, u32 pc, u64 atTicks)
{
u64 userdata = (u64)listid << 32 | (u64) pc;
CoreTiming::ScheduleEvent(atTicks - CoreTiming::GetTicks(), geInterruptEvent, userdata);
CoreTiming::ScheduleEvent_Threadsafe(atTicks - CoreTiming::GetTicks(), geInterruptEvent, userdata);
return true;
}