private void Control_Render(object sender, NativeWindowEventArgs e)
        {
            long       now      = DateTime.Now.Ticks;
            const long inv60FPS = 10000000 / 60;

            if (now - lastRenderTime > inv60FPS)
            {
                lastRenderTime = now;
                SparrowSharp.Step();
            }
        }
        private void RenderTimerCallback(object state)
        {
            // Rendering on main UI thread
            Android.App.Application.SynchronizationContext.Send(delegate {
                if (_DeviceContext == null)
                {
                    return;
                }
                bool needsSwap = SparrowSharp.Step();
                if (needsSwap)
                {
                    _DeviceContext.SwapBuffers();
                }

                int elapsed = (int)sw.ElapsedMilliseconds - 1;
                if (elapsed > _RenderTimerDueTime)
                {
                    elapsed = _RenderTimerDueTime;
                }
                _RenderTimer.Change(_RenderTimerDueTime - elapsed, Timeout.Infinite);
                sw.Restart();
            }, null);
        }