fix: Change how window resize detection works #1458
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.
What kind of change does this PR introduce?
Did this PR introduce a breaking change?
A breaking change includes anything that breaks backwards compatibility either at compile or run time.
Changes how the detection of window resizing works. Previously relied
on hardcoded 800 x 600 value, which was not always correct on MacOS, or
rescaling by the scaling factor, which was not always correct on Linux.
The physical size of the window is now stored right after the window is
initialized, and this value is used whenever we check for window
resizing.
I have tested this with
WINIT_X11_SCALING_FACTOR
set to 0.8, 1.0,1.5, 2.0, and 2.1, and observed seemingly-correct behavior on Linux,
(appropriate response to
--geometry
flag, no panics), so I believethat this closes a number of scaling bugs. I also have a Macbook on
which I was able to reproduce #1216, and this PR does not cause a
regression of behavior on that system.
Closes #1450
Closes #1384
Closes #1307
Does not regress #1216
One potential perf issue is the presence of
self.windowed_context.window().inner_size()
in
draw_frame()
. I'm hoping that the optimizer will be able to inlineand eliminate this call, but if we're worried about it, I can change
the implementation.