[rcore][GLFW] Fix window centering overflow with unsigned screen size - #6119
Open
nfvelten wants to merge 1 commit into
Open
[rcore][GLFW] Fix window centering overflow with unsigned screen size#6119nfvelten wants to merge 1 commit into
nfvelten wants to merge 1 commit into
Conversation
CORE.Window.screen/render sizes are unsigned, so the subtraction against the monitor workarea wraps when the window is larger than the monitor, producing a huge positive position instead of a negative one.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #6002.
Sizeis{ unsigned int width; unsigned int height; }(rcore.c), so inInitPlatform()the centering subtraction is done in unsigned arithmetic. When the window is larger than the monitor workarea on either axis it wraps around instead of going negative, and the division by 2 keeps it positive:X11 truncates that to 16 bits, which is where the reported off-screen window comes from (
0xF8E7= -1817). This is also whySetWindowPosition(0, 0)right afterInitWindow()works around it.Casting to
intis enough, no extra branches. Tested on Linux/X11:I could not test the reporter's exact setup (portrait primary monitor on Windows), only the same code path with an oversized window.