summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2012-11-19 15:16:22 +0200
committerTanu Kaskinen <tanuk@iki.fi>2012-11-19 15:16:22 +0200
commitf0853f081054bea169a94d3521a00e77e9cab58e (patch)
treeb0484cb8c2447652e8df614a491d44b11f887b6f
parentf8172658219e5131362c55f2badadea10a42bfe8 (diff)
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.
-rw-r--r--src/mainwindow.cc4
1 files changed, 2 insertions, 2 deletions
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) {