avoid jitter while resizing instructions #31222
Merged
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.
Description
Fixes a bug in minecraft instructions as described here:
Repro steps
usually, the screen becomes unresponsive by this point, and a few seconds later a "maximum stack depth exceeded" error appears. If you do not experience this, you can test whether the problem has been hit by running
window.addEventListener('resize', function() {console.log('resize');}
and pressing Run / Reset again.Root cause
The root cause is that the instructions area can get into an infinite loop where it responds to its inputs changing by modifying the same input. In this particular case, it causes the
renderedHeight
to go up and down by 1 forever. The many resize events are secondary to this.Solution
Only update the rendered height of the instructions if it is changing by more than 1. This eliminates the specific problem, but would not (for example) protect against other loops which modify the value by say +/- 2 on each iteration.
Testing story
Manually verified the issue is resolved. Since the repro steps are super-specific and involve changing the screen zoom level, I'm not adding a regression test to catch this exact problem.
Future work
LP-838 tracks implementing a more robust solution, by eliminating the potential feedback loop rather than just dampening it.
Reviewer Checklist: