From 34e9cb6171351cdbc816f0a7954925237e67ed75 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Mon, 1 Jul 2019 16:32:52 -0400 Subject: [PATCH] Start and stop record or playback scrolling in idle time --- src/ProjectAudioManager.cpp | 5 ----- src/toolbars/ControlToolBar.cpp | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/ProjectAudioManager.cpp b/src/ProjectAudioManager.cpp index 9ac831928..71f6eaa6b 100644 --- a/src/ProjectAudioManager.cpp +++ b/src/ProjectAudioManager.cpp @@ -384,11 +384,6 @@ void DoTogglePinnedHead( AudacityProject &project ) TracksPrefs::SetPinnedHeadPreference(value, true); MenuManager::ModifyAllProjectToolbarMenus(); - // Change what happens in case transport is in progress right now - auto ctb = ControlToolBar::Find( *GetActiveProject() ); - if (ctb) - ctb->StartScrollingIfPreferred(); - auto &ruler = AdornedRulerPanel::Get( project ); // Update button image ruler.UpdateButtonStates(); diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index 1caa05c60..deb976295 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -691,8 +691,6 @@ int ControlToolBar::PlayPlayRegion(const SelectedRegion &selectedRegion, if (!success) return -1; - StartScrollingIfPreferred(); - return token; } @@ -794,8 +792,6 @@ void ControlToolBar::PlayDefault() void ControlToolBar::StopPlaying(bool stopStream /* = true*/) { - StopScrolling(); - AudacityProject *project = &mProject; auto &projectAudioManager = ProjectAudioManager::Get( mProject ); @@ -1210,8 +1206,6 @@ bool ControlToolBar::DoRecord(AudacityProject &project, if (success) { ProjectAudioIO::Get( *p ).SetAudioIOToken(token); mBusyProject = p; - - StartScrollingIfPreferred(); } else { CancelRecording(); @@ -1275,7 +1269,8 @@ void ControlToolBar::OnIdle(wxIdleEvent & event) else mPause->PopUp(); - if (!projectAudioManager.Recording()) { + bool recording = projectAudioManager.Recording(); + if (!recording) { mRecord->PopUp(); mRecord->SetAlternateIdx( wxGetKeyState(WXK_SHIFT) ? 1 : 0 ); } @@ -1284,8 +1279,8 @@ void ControlToolBar::OnIdle(wxIdleEvent & event) mRecord->SetAlternateIdx( projectAudioManager.Appending() ? 0 : 1 ); } - if ( !(projectAudioManager.Playing() || Scrubber::Get(mProject).HasMark()) - ) { + bool playing = projectAudioManager.Playing(); + if ( !(playing || Scrubber::Get(mProject).HasMark()) ) { mPlay->PopUp(); mPlay->SetAlternateIdx( wxGetKeyState(WXK_CONTROL) @@ -1306,6 +1301,11 @@ void ControlToolBar::OnIdle(wxIdleEvent & event) ); } + if ( recording || playing ) + StartScrollingIfPreferred(); + else + StopScrolling(); + if ( projectAudioManager.Stopping() ) mStop->PushDown(); else @@ -1468,12 +1468,12 @@ void ControlToolBar::StartScrolling() using Mode = ProjectWindow::PlaybackScroller::Mode; const auto project = &mProject; if (project) { - auto gAudioIO = AudioIO::Get(); auto mode = Mode::Pinned; #if 0 // Enable these lines to pin the playhead right instead of center, // when recording but not overdubbing. + auto gAudioIO = AudioIO::Get(); if (gAudioIO->GetNumCaptureChannels() > 0) { // recording