[pulseaudio-commits] src/mainwindow.cc

Tanu Kaskinen tanuk at kemper.freedesktop.org
Thu Nov 22 06:03:11 PST 2012


 src/mainwindow.cc |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit f0853f081054bea169a94d3521a00e77e9cab58e
Author: Tanu Kaskinen <tanuk at iki.fi>
Date:   Mon Nov 19 15:16:22 2012 +0200

    mainwindow: Don't clear the "updating" flag in updateCard() too early.
    
    The prepareMenu() call can change the active profile selection, which
    in turn will cause a "set card profile" command to be sent to the
    server if the "updating" flag is not set, so the "updating" flag needs
    to be set when calling prepareMenu() from updateCard().
    
    This caused a problem with disconnecting bluetooth headsets: as part
    of the disconnection procedure, module-bluetooth-device sets the card
    profile to "off". At that point module-card-restore doesn't do
    anything, because the change is marked as "don't save". But the
    profile change event is then sent to pavucontrol, which updates its
    view, and pavucontrol sends the new profile ("off") back to
    pulseaudio, and this time the profile change iss marked as "please
    save", so module-card-restore restores the "off" profile when the
    device is connected again, even though the user never requested the
    "off" profile to be chosen.

diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index 1041eab..720a4db 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -346,12 +346,12 @@ void MainWindow::updateCard(const pa_card_info &info) {
         }
     }
 
-    w->updating = false;
-
     w->prepareMenu();
 
     if (is_new)
         updateDeviceVisibility();
+
+    w->updating = false;
 }
 
 bool MainWindow::updateSink(const pa_sink_info &info) {



More information about the pulseaudio-commits mailing list