Skip to content

Conversation

@anriha
Copy link
Contributor

@anriha anriha commented Jan 14, 2026

This PR implements the wp_content_type_v1 protocol and refines the logic for cursor throttling on fullscreen windows with VRR enabled.

Currently, the compositor throttles cursor updates to ~24Hz for any fullscreen window to prevent VRR brightness flicker. While this is necessary for games and video playback, it creates a terrible user experience for native productivity applications (e.g., terminal emulators). On a 144Hz screen, a fullscreen terminal feeling locked to 24fps is jarring and unresponsive.

Changes

  1. Protocol Support: Implemented wp_content_type_v1 to allow clients to specify their content
  2. Smart Throttling Logic: The render loop now uses the content type to decide whether to skip cursor-only updates:
    • Native Apps (Type: None): Unthrottled. This restores smooth 144Hz mouse movement for terminals, browsers, and editors.
    • Video / Photo: Throttled. Preserves correct frame pacing and power saving.
    • Game: Throttled. Ensures the refresh rate matches the game's rendering rate to prevent VRR gamma flicker/judder. If we decide to implement tearing support that should probably override this.
    • XWayland: Throttled. Since XWayland windows do not currently support the content-type protocol, we assume fullscreen X11 windows are likely games and default to the "safe" legacy behavior to prevent flicker.

Copy link
Collaborator

@Ottatop Ottatop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently, the compositor throttles cursor updates to ~24Hz for any fullscreen window to prevent VRR brightness flicker.

It's not to prevent VRR flicker. It's not even throttling, the cursor will refresh at above 24hz if the underlying content is refreshing at a higher rate. Rather, it's a baseline so the pointer actually moves when you move your mouse when nothing else on the screen is changing.

Co-authored-by: Ottatop <120758733+Ottatop@users.noreply.github.com>
@anriha
Copy link
Contributor Author

anriha commented Jan 14, 2026

I assumed that the vrr flicker was the main concern, but if it isn't this makes more sense.

Copy link
Collaborator

@Ottatop Ottatop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@Ottatop Ottatop merged commit d17874e into pinnacle-comp:main Jan 14, 2026
11 checks passed
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.

2 participants