Repository navigation
libdmview: draw nothing beneath an opaque box of the root - #13
Merged
Merged
Conversation
A redraw of the root drew everything, also what an opaque box drawn later hides - an application window sliding over the home screen. A run of the view without drawing finds where the boxes are this time; the opaque box of the root that hides the most of the area (leaving one rectangle) is the occluder, and everything executed before its BOX is drawn only where it shows. Views without opaque boxes of the root do not pay for the extra run. The pixels are the same. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
A redraw of the root used to draw everything, including what an opaque box drawn later hides. The usual case is an application window sliding over the home screen: the whole home screen was drawn on every animation frame, and then the window over most of it.
Now, before a redraw of the root:
$win_y).OPAQUE, not translucent, visible): the one that hides the most of the redrawn area, as long as the rest is one rectangle. An example is a full-width box at the top or bottom of the area.BOXis drawn only in the part that shows, and from thatBOXon the full clip is back. Execution order matters, not position in the code, so subroutines called before the window are covered.Views without opaque boxes of the root do not pay for the extra run. Partial redraws of a box are unchanged.
Testing
test_libdmviewpasses.🤖 Generated with Claude Code