Repository navigation
Request renders for native X11 and WinAPI damage - #55
Merged
Merged
Conversation
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.
X11
Exposeevents are currently ignored, and WinAPIWM_PAINTonly requests a render when the client size changes. A damaged window can therefore missonRendereven when the application services it normally.Schedule a redraw for the affected window on X11 exposure and on WinAPI paint damage, including when the size is unchanged. Internal
WM_PAINTmessages with an empty update region do not request a frame. Rendering continues through the existingserviceWindow/onRenderpath.This lets consumers such as Merenda remove their blanket repaint-after-activity fallback and rely on application invalidation plus native damage. Event-loop wakes and unrelated native events do not themselves request redraws. Related to #54.
Extend
t_event_loop.nimwith coverage for coalesced wakes, explicit redraws, unrelated native activity, native damage combined with a wake in either order, unchanged sizes, and isolation between two windows. The Windows coverage also checks an internal paint without damage. Update the README to explain the render contract.Validation from Merenda's Atlas workspace:
atlas-run tests deps/siwin/tests/t_event_loop.nimpassed on macOS.nim check --os:linux deps/siwin/tests/t_event_loop.nimpassed.nim check --os:windows deps/siwin/tests/t_event_loop.nimpassed.Native X11 and Windows runtime cases were not executed locally. No full suite was run locally.