fix(linux): keep the capture clock ticking while cursor messages flow - #940
Conversation
The PipeWire helper's loop advanced the capture clock, which holds the last picture forward and drains the audio rings, only on a new frame or when recv_timeout expired. Every other message restarts that timeout, and cursor messages arrive at the compositor's rate while the mouse moves: on a static screen with a moving mouse nothing advanced, and the 2 s audio rings dropped their oldest samples. The heartbeat is now checked at the top of every pass, whatever woke the loop, and is the one place a tick advances the clock. Fixes #936
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
|
|
@coderabbitai review |
|
|
@coderabbitai review |
|
|
@coderabbitai review |
|
Fixes #936. Part of #920.
Cause
Capture::advance) to hold the last picture forward and to drain the audio rings.FrameReadyor whenrecv_timeoutexpired. Any other message restarts the timeout.Change
Verified
Under WSL (
nix develop .#compositor-view, ffmpeg n8.1.2):the_heartbeat_comes_due_every_tick_whatever_else_arrives: with a message every 7 ms, the clock still advances every tick or so.Pending
audio-droppedwarning and continuous audio.🤖 Generated with Claude Code