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 m_AsyncWorkQueue = new Queue(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; } } }