91 lines
2.5 KiB
C#
91 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
using UnityEngine.Scripting;
|
|
|
|
namespace UnityEngine
|
|
{
|
|
// Token: 0x0200048C RID: 1164
|
|
internal sealed class UnitySynchronizationContext : SynchronizationContext
|
|
{
|
|
// Token: 0x06003A17 RID: 14871 RVA: 0x00065634 File Offset: 0x00063834
|
|
public override void Send(SendOrPostCallback callback, object state)
|
|
{
|
|
callback(state);
|
|
}
|
|
|
|
// Token: 0x06003A18 RID: 14872 RVA: 0x00065640 File Offset: 0x00063840
|
|
public override void Post(SendOrPostCallback callback, object state)
|
|
{
|
|
object asyncWorkQueue = this.m_AsyncWorkQueue;
|
|
lock (asyncWorkQueue)
|
|
{
|
|
this.m_AsyncWorkQueue.Enqueue(new UnitySynchronizationContext.WorkRequest(callback, state));
|
|
}
|
|
}
|
|
|
|
// Token: 0x06003A19 RID: 14873 RVA: 0x0006568C File Offset: 0x0006388C
|
|
private void Exec()
|
|
{
|
|
object asyncWorkQueue = this.m_AsyncWorkQueue;
|
|
lock (asyncWorkQueue)
|
|
{
|
|
while (this.m_AsyncWorkQueue.Count > 0)
|
|
{
|
|
this.m_AsyncWorkQueue.Dequeue().Invoke();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x06003A1A RID: 14874 RVA: 0x000656F0 File Offset: 0x000638F0
|
|
[RequiredByNativeCode]
|
|
private static void InitializeSynchronizationContext()
|
|
{
|
|
if (SynchronizationContext.Current == null)
|
|
{
|
|
SynchronizationContext.SetSynchronizationContext(new UnitySynchronizationContext());
|
|
}
|
|
}
|
|
|
|
// Token: 0x06003A1B RID: 14875 RVA: 0x00065708 File Offset: 0x00063908
|
|
[RequiredByNativeCode]
|
|
private static void ExecuteTasks()
|
|
{
|
|
UnitySynchronizationContext unitySynchronizationContext = SynchronizationContext.Current as UnitySynchronizationContext;
|
|
if (unitySynchronizationContext != null)
|
|
{
|
|
unitySynchronizationContext.Exec();
|
|
}
|
|
}
|
|
|
|
// Token: 0x04001197 RID: 4503
|
|
private const int kAwqInitialCapacity = 20;
|
|
|
|
// Token: 0x04001198 RID: 4504
|
|
private readonly Queue<UnitySynchronizationContext.WorkRequest> m_AsyncWorkQueue = new Queue<UnitySynchronizationContext.WorkRequest>(20);
|
|
|
|
// Token: 0x0200048D RID: 1165
|
|
private struct WorkRequest
|
|
{
|
|
// Token: 0x06003A1C RID: 14876 RVA: 0x00065730 File Offset: 0x00063930
|
|
public WorkRequest(SendOrPostCallback callback, object state)
|
|
{
|
|
this.m_DelagateCallback = callback;
|
|
this.m_DelagateState = state;
|
|
}
|
|
|
|
// Token: 0x06003A1D RID: 14877 RVA: 0x00065744 File Offset: 0x00063944
|
|
public void Invoke()
|
|
{
|
|
this.m_DelagateCallback(this.m_DelagateState);
|
|
}
|
|
|
|
// Token: 0x04001199 RID: 4505
|
|
private readonly SendOrPostCallback m_DelagateCallback;
|
|
|
|
// Token: 0x0400119A RID: 4506
|
|
private readonly object m_DelagateState;
|
|
}
|
|
}
|
|
}
|