Avoid occasional 'busy wait' for next render time in main loop. #21953
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See #18491.
Fix for bug where:
now >= nextLogic && renderBeforeNextTick && Renderer.WindowIsSuspended
renderBeforeNextTick
will never becomefalse
now > nextRender
nextRender
is reachedChanges:
Thread.sleep
rather than busy wait/spin.renderBeforeNextTick
will be false - even if there was not time to render - and we skip.In the rare occasion where
!haveSomeTimeUntilNextLogic && !forceRender
a render is skipped. This seemed to be the original implied intended behavior. May cause issues if certain logic relies on render ticks to occur. But this also already happens/happened in suspended window mode.I myself would prefer to update next render time also based on actual time spent rendering. But i guess then you would not be able to meet the indended fps. It would be beneficial on slower systems.