private void ReleaseDisplayLink() { if (_isAttachedToLooper) { //Detach the _displayLink to the MainLoop (uiThread). _displayLink?.RemoveFromRunLoop(NSRunLoop.Main, NSRunLoop.NSDefaultRunLoopMode); //detaches from the UI thread _displayLink?.RemoveFromRunLoop(NSRunLoop.Main, NSRunLoop.UITrackingRunLoopMode); _displayLink = null; _isAttachedToLooper = false; } }
public void StopAnimation() { if (dl != null) { dl.RemoveFromRunLoop(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); } }
private void ReleaseDisplayLink() { if (_isAttachedToLooper) { //Detach the _displayLink to the MainLoop (uiThread). #if __IOS__ #if NET6_0_OR_GREATER _displayLink?.RemoveFromRunLoop(NSRunLoop.Main, NSRunLoopMode.Default); //detaches from the UI thread _displayLink?.RemoveFromRunLoop(NSRunLoop.Main, NSRunLoopMode.UITracking); #else _displayLink?.RemoveFromRunLoop(NSRunLoop.Main, NSRunLoop.NSDefaultRunLoopMode); //detaches from the UI thread _displayLink?.RemoveFromRunLoop(NSRunLoop.Main, NSRunLoop.UITrackingRunLoopMode); #endif _displayLink = null; #endif _isAttachedToLooper = false; } }
protected override void DisableTimer() { if (_link != null) { _link.RemoveFromRunLoop(NSRunLoop.Current, NSRunLoop.NSRunLoopCommonModes); _link.Dispose(); } _link = null; }
partial void OnCancel() { if (displayLink != null) { displayLink.RemoveFromRunLoop(Foundation.NSRunLoop.Main, Foundation.NSRunLoopMode.Common); displayLink = null; OnStop(); } }
public override void Stop() { if (link == null) { return; } link?.RemoveFromRunLoop(NSRunLoop.Current, NSRunLoop.NSRunLoopCommonModes); link?.Dispose(); link = null; }
public override void Stop() { if (_link == null) { return; } _link?.RemoveFromRunLoop(NSRunLoop.Current, NSRunLoopMode.Common); _link?.Dispose(); _link = null; }
protected override void Dispose(bool disposing) { if (_disposed) { return; } if (disposing) { _displayLink.RemoveFromRunLoop(NSRunLoop.Current, NSRunLoopMode.Default); GraphicsDevice.Dispose(); } _disposed = true; base.Dispose(disposing); }
private void CreateDisplayLink() { if (_displayLink != null) { _displayLink.RemoveFromRunLoop(NSRunLoop.Main, NSRunLoop.NSDefaultRunLoopMode); } _displayLink = UIScreen.MainScreen.CreateDisplayLink(_viewController.View as iOSGameView, new Selector("doTick")); // FrameInterval represents how many frames must pass before the selector // is called again. We calculate this by dividing our target elapsed time by // the duration of a frame on iOS (Which is 1/60.0f at the time of writing this). _displayLink.FrameInterval = (int)Math.Round(60f * Game.TargetElapsedTime.TotalSeconds); _displayLink.AddToRunLoop(NSRunLoop.Main, NSRunLoop.NSDefaultRunLoopMode); }
void OnUpdate() { bool lowMem = false; while (_events.Count > 0) { EventBase e; _events.TryDequeue(out e); _frame.Enqueue(e); if (e is Pause) { DoUpdate(); _link.RemoveFromRunLoop(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); _link.Dispose(); return; } else if (e is LowMemory) { lowMem = true; } else if (e is Resize) { this.InvokeOnMainThread(() => { EAGLContext.SetCurrentContext(_glContext); this.Initialize(false); }); } } DoUpdate(); _frame.ClearEvents(); if (lowMem) { _lowMemHandled = true; } }