/// <summary> /// Handles limiting the game's FPS when the window isn't active. /// </summary> private void LimitFpsOnInactiveWindow() { if (CurrentScreen != null && CurrentScreen.Exiting) { return; } if (!IsActive && WindowActiveInPreviousFrame && OtherGameMapDatabaseCache.OnSyncableScreen() || OtherGameMapDatabaseCache.OnSyncableScreen() && !IsActive && !WindowActiveInPreviousFrame) { InactiveSleepTime = TimeSpan.FromSeconds(1d / 30); } // Restore user's settings else if (!WindowActiveInPreviousFrame && (IsActive || !OtherGameMapDatabaseCache.OnSyncableScreen())) { InactiveSleepTime = TimeSpan.Zero; InitializeFpsLimiting(); } WindowActiveInPreviousFrame = IsActive; }
/// <summary> /// Handles limiting the game's FPS when the window isn't active. /// </summary> private void LimitFpsOnInactiveWindow() { if (CurrentScreen != null && CurrentScreen.Exiting) { return; } if (!IsActive && WindowActiveInPreviousFrame && OtherGameMapDatabaseCache.OnSyncableScreen() || OtherGameMapDatabaseCache.OnSyncableScreen() && !IsActive && !WindowActiveInPreviousFrame) { Graphics.SynchronizeWithVerticalRetrace = false; TargetElapsedTime = TimeSpan.FromSeconds(1d / 30); IsFixedTimeStep = true; } // Restore user's settings else if (!WindowActiveInPreviousFrame && (IsActive || !OtherGameMapDatabaseCache.OnSyncableScreen())) { InitializeFpsLimiting(); } WindowActiveInPreviousFrame = IsActive; }