Skip to content

fix(linux): ignore stale volume read-backs after our own write - #77

Merged
ealtun21 merged 1 commit into
masterfrom
fix/gui-apps-panel-flicker
Oct 12, 2026
Merged

ealtun21 merged 1 commit into
masterfrom
fix/gui-apps-panel-flicker

Conversation

@ealtun21

Copy link
Copy Markdown
Owner

Problem

Dragging a volume slider made the system volume bar (DMS) jitter ~0.1 s.

Root cause (by code trace)

PipeWire reports intermediate route/props values back late. The daemon applied them to the optimistic sink/app volume, then sync_master_volume mirrored the stale device value onto the "resonance" default sink, so the system bar jumped back, then forward again when the fresh read-back landed.

Fix

Skip volume/mute read-backs for 300 ms after we write a sink/app node (echo_pending); the next 200 ms route poll lands the real value. Unit test for the window.

Not reproduced

The Applications-panel flicker did not reproduce: with a private PipeWire and 3 playing streams the daemon published only on stream add and the GUI rendered pixel-identical frames. This PR may not fix it.

🤖 Generated with Claude Code

PipeWire echoes every intermediate value of a drag back late. Applying
them reverted the optimistic sink/app volume, and sync_master_volume
then mirrored the stale value onto the resonance sink, so the system
volume bar jumped back and forth. Skip volume/mute read-backs for 300 ms
after we write a node; the next poll lands the real value.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@ealtun21
ealtun21 merged commit 15df6bb into master Oct 12, 2026
5 of 6 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.

1 participant