mono/MonoGame — pull request #2607 by danzel (2014-05-23 10:13:06+00:00)
Title: Redo the IsRunningSlowly calculation 

Our previous method for calculating if we were running slowly was to time a whole frame (including Present time). If this is >= TargetElapsedTime then we decided we were running slowly.
Unfortunately this can be basically all of the time as Present waits for vsync (hardware/driver dependent).

I've made a test project to see how IsRunningSlowly behaves in XNA. It seems that when the game does many Update calls before a Draw call this triggers IsRunningSlowly to become true.
It only becomes unset after a few times of just doing a single Update per Draw call.

I've implemented this in MonoGame, the results don't exactly match XNA, but they are very close. We only set IsRunningSlowly at the same times as them, we unset it a bit sooner however.

The 5 used for triggering IsRunningSlowly I arbitrarily chose.

Fixes #2595 (Contains good discussion on the issue)