From 2d6db518fa00f1f6175189d66d5a1cfdfda39606 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Sun, 22 Nov 2020 19:54:14 -0500 Subject: [PATCH] Prevent dangling pointers to meters... ... This stops a crash that might occur when the checkpoint thread causes ProjectAudioManager::Stop() to execute but the project is in the process of closing. --- src/ProjectAudioIO.cpp | 1 + src/ProjectAudioIO.h | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ProjectAudioIO.cpp b/src/ProjectAudioIO.cpp index 9f541df7a..9dafaee5c 100644 --- a/src/ProjectAudioIO.cpp +++ b/src/ProjectAudioIO.cpp @@ -12,6 +12,7 @@ Paul Licameli split from AudacityProject.cpp #include "AudioIOBase.h" #include "Project.h" +#include "widgets/MeterPanelBase.h" static const AudacityProject::AttachedObjects::RegisteredFactory sAudioIOKey{ []( AudacityProject &parent ){ diff --git a/src/ProjectAudioIO.h b/src/ProjectAudioIO.h index 85c7c976f..bee522795 100644 --- a/src/ProjectAudioIO.h +++ b/src/ProjectAudioIO.h @@ -12,6 +12,7 @@ Paul Licameli split from AudacityProject.h #define __PROJECT_AUDIO_IO__ #include "ClientData.h" // to inherit +#include class AudacityProject; class MeterPanelBase; @@ -43,8 +44,8 @@ private: AudacityProject &mProject; // Project owned meters - MeterPanelBase *mPlaybackMeter{}; - MeterPanelBase *mCaptureMeter{}; + wxWeakRef mPlaybackMeter{}; + wxWeakRef mCaptureMeter{}; int mAudioIOToken{ -1 }; };