Skip to content

pulse-server: emulate synchronous MOVE_* commands

P V requested to merge pvir/pipewire:pasystray-fix into master

If a Pulseaudio client performs a stream MOVE_* command, and then asks GET_INFO for the stream, tell it that the stream was successfully moved, even if we didn't yet see the session manager move it.

Stop doing that once we know better (PW update event for the stream), or 1sec timeout passes. If timeout, emit a change event for the sink-input/source-output since we may have been telling lies, and PA clients need to update their knowledge.

It appears there are some clients (pasystray) that expect stream move to take effect immediately, not even waiting for the completion event. This doesn't seem to leave us much options how to fix it, except by lying about the status of the devices.

Add some machinery for conveniently tagging on such temporary data to manager objects, to make the lifecycle handling clearer.

See commits for details.

Edited by P V

Merge request reports