Skip to content

events: restrict Expose weeding scope to prevent cross-window coalescing#1310

Open
JRRandall wants to merge 1 commit into
fvwmorg:mainfrom
JRRandall:fix-expose-weeding-scope
Open

events: restrict Expose weeding scope to prevent cross-window coalescing#1310
JRRandall wants to merge 1 commit into
fvwmorg:mainfrom
JRRandall:fix-expose-weeding-scope

Conversation

@JRRandall
Copy link
Copy Markdown

What does this PR do?

Expose events are currently processed within a single weeding pass, which can coalesce events across multiple windows. In some cases, this can result in repaint obligations being dropped when Expose activity from one window affects another.

This change keeps the existing weeding pipeline intact, but returns both match (rc & 1) and stop (rc & 2) for Expose events. This limits each weeding pass to a smaller scope so Expose events are not coalesced across unrelated windows.

This preserves existing event handling behavior while preventing cross-window interaction during Expose coalescing.

Screenshots (if applicable)

N/A (behavioral fix; verified via xev -id and icon repaint testing)

Issue number(s)

Fixes #818

Expose events could be coalesced across multiple windows within a
single weeding pass, which may drop repaint obligations when one
window's Expose activity invalidates another's.

Return both match (rc & 1) and stop (rc & 2) for Expose events so
each weeding pass operates on a smaller scope, preventing
cross-window coalescing while preserving the existing pipeline.
@JRRandall
Copy link
Copy Markdown
Author

@ThomasAdam This patch is intentionally minimal and scoped to the observed regression: it restricts Expose coalescing to a single window per weeding pass without changing the overall event handling architecture or removing the existing pipeline behavior. The goal here is strictly to prevent cross-window interaction during Expose processing, which is where the repaint issue was consistently observed.

I’m happy to iterate further if there’s a preferred long-term direction for more structured per-window coalescing, but from the testing so far this resolves the practical regression without introducing broader behavioral changes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Icons on the root window don't always refresh when damaged or displayed

1 participant