AuburnSounds / AuburnSounds/Dplug

Towards solving the gordian knot of dirty rectangles in GUIGraphics

Open
#597 4 comments 0 reactions 0 assignees View on GitHub
Enhancement Low interest Super hard
Dominant language
D
Stars
564
Forks
34
PR merge metrics
No merged PRs in 30d

Description

In `IWindowListener`, the following functions are guaranteed to be called non-concurrently:
- `onDraw`
- `onResized`
- `recomputeDirtyAreas`
- `getDirtyRectangle`

`getDirtyRectangle` semantics is that once you have pulled the dirtyRectangle, you commit to have it mark as dirty to the OS, and consequent `onDraw` ensues with the proper WM_PAINT / dirtied area.

Try to see if there is potential conflict with:
`getDirtyRectangle` then `onResized` then `onResized`
since it may lead to the pending rect being abandoned.

Contributor guide

Open the contributing guide

Research direction

Start with the IWindowListener contract and the GUIGraphics handling of getDirtyRectangle, onResized, onDraw, recomputeDirtyAreas, and the pending dirty rectangle. Reproduce or reason through getDirtyRectangle followed by two onResized calls, then define behavior that prevents a pending rectangle from being abandoned before the corresponding OS invalidation and onDraw.

Written by the indexing model from the issue text.

Assessment

Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.