public int ExecuteQueued(CpuThreadState CpuThreadState, bool MustReschedule)
{
int ExecutedCount = 0;
if (HasScheduledCallbacks)
{
//Console.Error.WriteLine("STARTED CALLBACKS");
while (HasScheduledCallbacks)
{
var HleCallback = DequeueScheduledCallback();
var FakeCpuThreadState = new CpuThreadState(CpuProcessor);
FakeCpuThreadState.CopyRegistersFrom(CpuThreadState);
HleCallback.SetArgumentsToCpuThreadState(FakeCpuThreadState);
try
{
HleInterop.Execute(FakeCpuThreadState);
}
finally
{
ExecutedCount++;
}
//Console.Error.WriteLine(" CALLBACK ENDED : " + HleCallback);
if (MustReschedule)
{
//Console.Error.WriteLine(" RESCHEDULE");
break;
}
}
//Console.Error.WriteLine("ENDED CALLBACKS");
}
return ExecutedCount;
}