public ExecuteQueued ( |
||
BaseCpuThreadState | ||
return | void |
public void ExecuteQueued(CpuThreadState BaseCpuThreadState)
{
if (Enabled)
{
HleCallback[] HleCallbackListCopy;
lock (HleCallbackList)
{
HleCallbackListCopy = HleCallbackList.ToArray();
HleCallbackList.Clear();
Flag = false;
}
foreach (var HleCallback in HleCallbackListCopy)
{
var FakeCpuThreadState = new CpuThreadState(CpuProcessor);
FakeCpuThreadState.CopyRegistersFrom(BaseCpuThreadState);
HleCallback.SetArgumentsToCpuThreadState(FakeCpuThreadState);
FakeCpuThreadState.EnableYielding = false;
FakeCpuThreadState.ExecuteAT(FakeCpuThreadState.PC);
//HleInterop.Execute(FakeCpuThreadState);
//Console.Error.WriteLine("Execute queued");
// Execute just one!
//break;
}
}
}
private void ExecuteQueuedInterrupts() { #if !DISABLE_CALLBACKS if (Threads.Count > 0) { HleInterruptManager.ExecuteQueued(Threads.First().CpuThreadState); } #endif }