https://bugs.kde.org/show_bug.cgi?id=500968

Harald Sitter <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/libr
                   |                            |aries/pulseaudio-qt/-/commi
                   |                            |t/1af59b54e598bdc484aab6c5c
                   |                            |8496db3a953b371

--- Comment #41 from Harald Sitter <[email protected]> ---
Git commit 1af59b54e598bdc484aab6c5c8496db3a953b371 by Harald Sitter.
Committed on 11/09/2026 at 00:01.
Pushed by sitter into branch 'master'.

server: do not return incorrect default devices

somewhat clumsily when we failed to determine the default device we'd
instead return the last device in the enumerable. this would then bubble
up to become m_defaultSink/Source and incorrectly get presented as
default device when in fact it was not.

so far so terrible.

the far more elusive problem happens when the user has a second device
and then tries to switch to that one. now, having two devices it seems
like a good guess that this other device is in fact the *real* default
device and setting it default will be no-op on the PA server. as such,
we never get a change and never re-evaluate the default devices and
consequently end up with two devices checked in the UI: one because it
was incorrectly labeled default by pulseaudio-qt initially, the other
because QML marked it checked and we didn't fix it because the change
was no-op on the backend

it gets worse.

Sink/Source::setDefault() has a guard against manipulating the default
state of a device that is already default (as per our Server). since we
marked the wrong device default we are effectively making changes to
this device no-op on the frontend! so now the user has two entries
selected and the states are essentially locked. one cannot change
because it is no-oped on the frontend, the other because it is no-oped
on the backend.

M  +1    -1    src/server.cpp
M  +4    -2    src/server.h

https://invent.kde.org/libraries/pulseaudio-qt/-/commit/1af59b54e598bdc484aab6c5c8496db3a953b371

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to