You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-02 16:48:55 +00:00
[Mono] Tabs -> Spaces
This commit is contained in:
@@ -6,89 +6,89 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace Godot
|
||||
{
|
||||
public class GodotTaskScheduler : TaskScheduler
|
||||
{
|
||||
private GodotSynchronizationContext Context { get; set; }
|
||||
private readonly LinkedList<Task> _tasks = new LinkedList<Task>();
|
||||
public class GodotTaskScheduler : TaskScheduler
|
||||
{
|
||||
private GodotSynchronizationContext Context { get; set; }
|
||||
private readonly LinkedList<Task> _tasks = new LinkedList<Task>();
|
||||
|
||||
public GodotTaskScheduler()
|
||||
{
|
||||
Context = new GodotSynchronizationContext();
|
||||
SynchronizationContext.SetSynchronizationContext(Context);
|
||||
}
|
||||
public GodotTaskScheduler()
|
||||
{
|
||||
Context = new GodotSynchronizationContext();
|
||||
SynchronizationContext.SetSynchronizationContext(Context);
|
||||
}
|
||||
|
||||
protected sealed override void QueueTask(Task task)
|
||||
{
|
||||
lock (_tasks)
|
||||
{
|
||||
_tasks.AddLast(task);
|
||||
}
|
||||
}
|
||||
protected sealed override void QueueTask(Task task)
|
||||
{
|
||||
lock (_tasks)
|
||||
{
|
||||
_tasks.AddLast(task);
|
||||
}
|
||||
}
|
||||
|
||||
protected sealed override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
|
||||
{
|
||||
if (SynchronizationContext.Current != Context)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
protected sealed override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
|
||||
{
|
||||
if (SynchronizationContext.Current != Context)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (taskWasPreviouslyQueued)
|
||||
{
|
||||
TryDequeue(task);
|
||||
}
|
||||
if (taskWasPreviouslyQueued)
|
||||
{
|
||||
TryDequeue(task);
|
||||
}
|
||||
|
||||
return TryExecuteTask(task);
|
||||
}
|
||||
return TryExecuteTask(task);
|
||||
}
|
||||
|
||||
protected sealed override bool TryDequeue(Task task)
|
||||
{
|
||||
lock (_tasks)
|
||||
{
|
||||
return _tasks.Remove(task);
|
||||
}
|
||||
}
|
||||
protected sealed override bool TryDequeue(Task task)
|
||||
{
|
||||
lock (_tasks)
|
||||
{
|
||||
return _tasks.Remove(task);
|
||||
}
|
||||
}
|
||||
|
||||
protected sealed override IEnumerable<Task> GetScheduledTasks()
|
||||
{
|
||||
lock (_tasks)
|
||||
{
|
||||
return _tasks.ToArray();
|
||||
}
|
||||
}
|
||||
protected sealed override IEnumerable<Task> GetScheduledTasks()
|
||||
{
|
||||
lock (_tasks)
|
||||
{
|
||||
return _tasks.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
public void Activate()
|
||||
{
|
||||
ExecuteQueuedTasks();
|
||||
Context.ExecutePendingContinuations();
|
||||
}
|
||||
public void Activate()
|
||||
{
|
||||
ExecuteQueuedTasks();
|
||||
Context.ExecutePendingContinuations();
|
||||
}
|
||||
|
||||
private void ExecuteQueuedTasks()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Task task;
|
||||
private void ExecuteQueuedTasks()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
Task task;
|
||||
|
||||
lock (_tasks)
|
||||
{
|
||||
if (_tasks.Any())
|
||||
{
|
||||
task = _tasks.First.Value;
|
||||
_tasks.RemoveFirst();
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
lock (_tasks)
|
||||
{
|
||||
if (_tasks.Any())
|
||||
{
|
||||
task = _tasks.First.Value;
|
||||
_tasks.RemoveFirst();
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (task != null)
|
||||
{
|
||||
if (!TryExecuteTask(task))
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (task != null)
|
||||
{
|
||||
if (!TryExecuteTask(task))
|
||||
{
|
||||
throw new InvalidOperationException();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user