From ccee770a1b5cb8d06eb7f3bb6480eaa2c03ac405 Mon Sep 17 00:00:00 2001 From: Dmitry Vedenko <dmitry@crsib.me> Date: Tue, 13 Sep 2022 19:18:08 +0300 Subject: [PATCH] Fixes Apply button during the preview --- src/effects/EffectUI.cpp | 22 ++++++++++++++++++---- src/effects/EffectUI.h | 2 ++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/effects/EffectUI.cpp b/src/effects/EffectUI.cpp index 68d90349af..fa71dc69a0 100644 --- a/src/effects/EffectUI.cpp +++ b/src/effects/EffectUI.cpp @@ -501,6 +501,9 @@ void EffectUIHost::OnPaint(wxPaintEvent & WXUNUSED(evt)) void EffectUIHost::OnClose(wxCloseEvent & WXUNUSED(evt)) { + if (mPlaying) + StopPlayback(); + DoCancel(); CleanupRealtime(); @@ -530,6 +533,9 @@ void EffectUIHost::OnApply(wxCommandEvent & evt) { return; } + + if (mPlaying) + StopPlayback(); // Honor the "select all if none" preference...a little hackish, but whatcha gonna do... if (!mIsBatch && @@ -735,10 +741,7 @@ void EffectUIHost::OnPlay(wxCommandEvent & WXUNUSED(evt)) if (mPlaying) { - auto gAudioIO = AudioIO::Get(); - mPlayPos = gAudioIO->GetStreamTime(); - auto &projectAudioManager = ProjectAudioManager::Get( mProject ); - projectAudioManager.Stop(); + StopPlayback(); } else { @@ -1160,6 +1163,17 @@ void EffectUIHost::CleanupRealtime() } } +void EffectUIHost::StopPlayback() +{ + if (!mPlaying) + return; + + auto gAudioIO = AudioIO::Get(); + mPlayPos = gAudioIO->GetStreamTime(); + auto& projectAudioManager = ProjectAudioManager::Get(mProject); + projectAudioManager.Stop(); +} + DialogFactoryResults EffectUI::DialogFactory(wxWindow &parent, EffectPlugin &host, EffectUIClientInterface &client, EffectSettingsAccess &access) diff --git a/src/effects/EffectUI.h b/src/effects/EffectUI.h index 09463bbdd4..74968d961c 100644 --- a/src/effects/EffectUI.h +++ b/src/effects/EffectUI.h @@ -110,6 +110,8 @@ private: void CleanupRealtime(); + void StopPlayback(); + private: Observer::Subscription mAudioIOSubscription, mEffectStateSubscription; -- GitLab