Fixed TimeStep with Forced Draw Every Frame

Ok… I’ve mentioned this on here before. I’m running a fixed timestep at 60fps. I am forcing a draw after each update. Default behavior for fixed timestep does not call draw after each update. I’m achieving through doing the following:

set isFixedTimeStep = true;
set SynchronizeWithVerticalRetrace = true;

In your game class add:

protected override bool BeginDraw() {
return false;
}

This will inhibit the default draw calls. With isFixedTimeStep = true the logic calls Draw() “whenever they feels like it.” To quote one of the developers of XNA. So, you are not guaranteed a Draw call for each Update call.

Then, I add this to the end of my Update method:

if (base.BeginDraw()) {
Draw(spriteBatch);
base.EndDraw();
}

This calls the default Draw method after each Update. All is well and everything works perfectly. At this point, it’s up to me to make sure the game always updates and draws inside of the 60fps time limit.

The only catch is that this implementation causes keyboard input to become extremely unresponsive. Controller input works perfectly fine though.

The only reason for this I can think of for this is the isRunningSlowly flag is always set to true. I assume because of the BeginDraw() override. Even if you create a new, empty project and add the above code then run it the isRunningSlowly flag is set to true.

So… how can I prevent the keyboard input from becoming affected? Or… how can I ensure the isRunningSlowly flag is always false? I’ve poked around the MonoGame source code, and tried a few things, but have been unsuccessful in forcing that flag to always be false. Any help/insight is appreciated!