internal void Process()
{
Status.SetValue(DisplayListStatusEnum.Drawing);
if (Debug) Console.WriteLine("Process() : {0} : 0x{1:X8} : 0x{2:X8} : 0x{3:X8}", this.Id, this.InstructionAddressCurrent, this.InstructionAddressStart, this.InstructionAddressStall);
Done = false;
while (!Done)
{
if ((InstructionAddressStall != 0) && (InstructionAddressCurrent >= InstructionAddressStall))
{
if (Debug) Console.WriteLine("- STALLED --------------------------------------------------------------------");
Status.SetValue(DisplayListStatusEnum.Stalling);
while (!StallAddressUpdated.WaitOne(TimeSpan.FromSeconds(2)))
{
ConsoleUtils.SaveRestoreConsoleColor(ConsoleColor.Magenta, () =>
{
Console.WriteLine("DisplayListQueue.GetCountLock(): {0}", GpuProcessor.DisplayListQueue.GetCountLock());
Console.WriteLine("CurrentGpuDisplayList.Status: {0}", Status.ToStringDefault());
});
if (GpuProcessor.Syncing)
{
Done = true;
Status.SetValue(DisplayListStatusEnum.Completed);
return;
}
}
}
ProcessInstruction();
}
Status.SetValue(DisplayListStatusEnum.Completed);
}