fix(client): re-register AUDIO_INPUT listener so microphone can reopen - #1797
Open
Mariusz Białończyk (manio) wants to merge 2 commits into
Open
fix(client): re-register AUDIO_INPUT listener so microphone can reopen#1797Mariusz Białończyk (manio) wants to merge 2 commits into
Mariusz Białończyk (manio) wants to merge 2 commits into
Conversation
The AUDIO_INPUT (MS-RDPEAI) dynamic virtual channel was registered via `with_dynamic_channel`, which wraps the processor in an `OnceListener`. `OnceListener::create` hands out its `RdpeaiClient` exactly once: after the first DVC Close, it keeps returning `None`, so any later Create Request for AUDIO_INPUT is answered with `NO_LISTENER` and the microphone silently stops working for the rest of the session. Windows opens and closes AUDIO_INPUT repeatedly as apps grab/release the mic, so a single-shot registration is not sufficient. Switch to `with_listener` with a small `RdpeaiListener` factory that builds a fresh `RdpeaiClient` (and a fresh `RdpeaiCaptureBackend`/cpal stream) on every Create Request, matching the pattern already used for the RDPEWA listener. Gate the new type behind `feature = "sound"` and widen the existing `DvcChannelListener` import's cfg accordingly, since it is now also needed outside the `windows` + `dvc-com-plugin` path.
Mariusz Białończyk (manio)
deployed
to
llm-providers
August 25, 2026 05:07 — with
GitHub Actions
Active
Marc-André Moreau (mamoreau-devolutions)
approved these changes
Aug 25, 2026
CI's feature-matrix job builds with --no-default-features --features rustls,webauthn (no sound), which failed with unresolved-macro and unresolved-module errors: RdpeaiListener referenced pdu_other_err!, ironrdp_rdpeai, and RdpeaiCaptureBackend unconditionally, but those are only imported/available when the sound feature is enabled. Gate the struct and its DvcChannelListener impl behind `#[cfg(feature = "sound")]`, matching the existing gate on the RdpeaiCaptureBackend/cpal import and on the audio_capture branch that constructs it.
Mariusz Białończyk (manio)
deployed
to
llm-providers
August 28, 2026 02:58 — with
GitHub Actions
Active
Contributor
Author
|
Is this OK for merging now? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The AUDIO_INPUT (MS-RDPEAI) dynamic virtual channel was registered via
with_dynamic_channel, which wraps the processor in anOnceListener.OnceListener::createhands out itsRdpeaiClientexactly once: after the first DVC Close, it keeps returningNone, so any later Create Request for AUDIO_INPUT is answered withNO_LISTENERand the microphone silently stops working for the rest of the session.Windows opens and closes AUDIO_INPUT repeatedly as apps grab/release the mic, so a single-shot registration is not sufficient.
Switch to
with_listenerwith a smallRdpeaiListenerfactory that builds a freshRdpeaiClient(and a freshRdpeaiCaptureBackend/cpal stream) on every Create Request, matching the pattern already used for the RDPEWA listener. Gate the new type behindfeature = "sound"and widen the existingDvcChannelListenerimport's cfg accordingly, since it is now also needed outside thewindows+dvc-com-pluginpath.Marc-André Moreau (@mamoreau-devolutions)