From c690e034711325b3f8480715e70a2a2615fc3964 Mon Sep 17 00:00:00 2001 From: Leland Lucius Date: Thu, 19 Mar 2020 23:36:17 -0500 Subject: [PATCH] Bug 1366 - Using the sliders in Mixer Toolbar in a Project-2 alters levels in on-going recording (or playback) in Project-1 Should be okay now... --- src/toolbars/MixerToolBar.cpp | 17 ++++++++++++----- src/toolbars/MixerToolBar.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/toolbars/MixerToolBar.cpp b/src/toolbars/MixerToolBar.cpp index 10540c7db..8b8d173db 100644 --- a/src/toolbars/MixerToolBar.cpp +++ b/src/toolbars/MixerToolBar.cpp @@ -60,6 +60,7 @@ MixerToolBar::MixerToolBar( AudacityProject &project ) { mInputSliderVolume = 0.0; mOutputSliderVolume = 0.0; + mEnabled = true; } MixerToolBar::~MixerToolBar() @@ -121,13 +122,15 @@ void MixerToolBar::Populate() this); // Show or hide the input slider based on whether it works auto gAudioIO = AudioIO::Get(); - mInputSlider->Enable(gAudioIO->InputMixerWorks()); + mInputSlider->Enable(mEnabled && gAudioIO->InputMixerWorks()); + mOutputSlider->Enable(mEnabled); UpdateControls(); // Add a little space Add(2, -1); + // Listen for capture events wxTheApp->Bind(EVT_AUDIOIO_CAPTURE, &MixerToolBar::OnAudioCapture, this); @@ -135,11 +138,14 @@ void MixerToolBar::Populate() void MixerToolBar::OnAudioCapture(wxCommandEvent & event) { + event.Skip(); + AudacityProject *p = &mProject; - if (event.GetEventObject() != p) + if ((AudacityProject *) event.GetEventObject() != p) { - mInputSlider->Enable(!event.GetInt()); - mOutputSlider->Enable(!event.GetInt()); + mEnabled = !event.GetInt(); + mInputSlider->Enable(mEnabled); + mOutputSlider->Enable(mEnabled); } } @@ -183,7 +189,7 @@ void MixerToolBar::UpdatePrefs() gAudioIO->GetMixer(&inputSource, &inputVolume, &playbackVolume); // Show or hide the input slider based on whether it works - mInputSlider->Enable(gAudioIO->InputMixerWorks()); + mInputSlider->Enable(mEnabled && gAudioIO->InputMixerWorks()); Layout(); // This code is from before the mixer toolbar was resizable. @@ -227,6 +233,7 @@ void MixerToolBar::UpdateControls() // Show or hide the input slider based on whether it works auto gAudioIO = AudioIO::Get(); + mInputSlider->Enable(mEnabled && gAudioIO->InputMixerWorks()); gAudioIO->GetMixer(&inputSource, &inputVolume, &playbackVolume); diff --git a/src/toolbars/MixerToolBar.h b/src/toolbars/MixerToolBar.h index 75844ad1e..3726f64a9 100644 --- a/src/toolbars/MixerToolBar.h +++ b/src/toolbars/MixerToolBar.h @@ -67,6 +67,7 @@ class MixerToolBar final : public ToolBar { ASlider *mInputSlider; ASlider *mOutputSlider; + bool mEnabled; public: