rust-windowing / rust-windowing/winit

`Occluded` change must be synced with winit

Open
#3,442 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

DS - wayland
Dominant language
Rust
Stars
6.2k
Forks
1.3k
Avg merge
2d 19h
Merged PRs (30d)
9

Description

State change on Wayland, demands confirmation in form of ack + commit, commit usually done when drawing, however when using Vsync extension drawing will block indefinitely when you'll have Occluded event.

To solve that winit must have a way to commit on-behalf of the users, however doing so unconditionally will break clients and may result in desyncs, but asking them to draw and then send Occluded is also not an option, thus Occluded itself should ask whether the user stopped their rendering/continued their rendering, thus on stop winit can do wl_surface::commit.

This issue is also kind of present with other state changes, and not really specific to occluded, however occluded is the only where it really matters.

Until it's resolved it winit will remove the handling of this event.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at winit's Occluded event handling and inspect the Wayland ack/commit flow, especially with the Vsync extension. Determine the API or behavior needed for users to indicate stopped or continued rendering, then validate it against the described blocking case and state-change synchronization requirements.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.