private void TryDoUpdateAndRender() { if (m_firstFrame) { m_firstFrame = false; return; } if (MapHost.Source == null) { return; } if (!m_mapImage.IsFrontBufferAvailable) { return; } var dt = m_frameTimer.Elapsed.TotalSeconds; if (!m_hasEmptiedEventQueueSinceLastRender && (dt < m_maxDelta)) { if (m_logging) { Debug.WriteLine(string.Format("[{0}] BAIL dt {1}, frameTimer {2}", m_frameCount, dt, m_frameTimer.Elapsed)); } return; } if (m_logging) { Debug.WriteLine(string.Format("[{0}] BAIL dt {1}, frameTimer {2}", m_frameCount, dt, m_frameTimer.Elapsed)); } m_hasEmptiedEventQueueSinceLastRender = false; m_hasHadRenderEventSinceRender = false; ++m_frameCount; m_frameTimer.Restart(); if (m_buttonsDown > 0) { m_mapImage.SaveInputTime(); } m_mapImage.Render((float)dt); }