protected override void Dispose(bool disposing) { // stop the render loop if (_displayLink != null) { _displayLink.Invalidate(); _displayLink.Dispose(); _displayLink = null; } base.Dispose(disposing); }
partial void DoEnableRenderLoop(bool enable) { // stop the render loop if (!enable) { if (displayLink != null) { displayLink.Invalidate(); displayLink.Dispose(); displayLink = null; } return; } // only start if we haven't already if (displayLink != null) { return; } // create the loop displayLink = CADisplayLink.Create(delegate { // redraw the view glView?.BeginInvokeOnMainThread(() => glView?.Display()); // stop the render loop if it has been disabled or the views are disposed if (glView == null || !EnableRenderLoop) { DoEnableRenderLoop(false); } }); displayLink.AddToRunLoop(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode); }
protected override void DisableTimer() { if (_link != null) { _link.RemoveFromRunLoop(NSRunLoop.Current, NSRunLoop.NSRunLoopCommonModes); _link.Dispose(); } _link = null; }
public void Dispose() { _isDisposed = true; Update = null; AnimationEnd = null; AnimationCancel = null; Stop(); _displayLink?.Dispose(); }
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 void StopAutoScroll() { if (displayLink == null) { return; } displayLink.Paused = true; displayLink.Dispose(); displayLink = null; isAutoScrollingUp = false; isAutoScrollingDown = false; }
private bool PerformPendingExit() { if (!_isExitPending) { return(false); } _isExitPending = false; if (_displayLink != null) { _displayLink.Invalidate(); _displayLink.Dispose(); _displayLink = null; } UIApplication.SharedApplication.SetStatusBarHidden(false, UIStatusBarAnimation.Fade); if (_viewController != null) { _viewController.InterfaceOrientationChanged -= ViewController_InterfaceOrientationChanged; _viewController.View.RemoveFromSuperview(); _viewController.View.Dispose(); _viewController.RemoveFromParentViewController(); //this might crash ventus? _viewController.Dispose(); _viewController = null; } if (_mainWindow != null) { _mainWindow.RemoveFromSuperview(); _mainWindow.Dispose(); _mainWindow = null; } if (Window != null) { Window = null; } StopObservingUIApplication(); RaiseAsyncRunLoopEnded(); //this.Game=null; return(true); }
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; } }