From f5c095ebda4a66a315bca796a937e8fa24438117 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sat, 14 Dec 2019 00:00:55 +0100 Subject: [PATCH] Trying to pinpoint the segfault in JALV but it seems it's not in sfizz --- src/sfizz/Synth.cpp | 13 +++++++++++++ src/sfizz/Synth.h | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 01703a93..3fb00c90 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -46,6 +46,19 @@ sfz::Synth::Synth(int numVoices) resetVoices(numVoices); } +sfz::Synth::~Synth() +{ + AtomicDisabler callbackDisabler { canEnterCallback }; + while (inCallback) { + std::this_thread::sleep_for(1ms); + } + + for (auto& voice: voices) + voice->reset(); + + resources.filePool.emptyFileLoadingQueues(); +} + void sfz::Synth::callback(absl::string_view header, const std::vector& members) { switch (hash(header)) { diff --git a/src/sfizz/Synth.h b/src/sfizz/Synth.h index 86159f93..9aa8b6d9 100644 --- a/src/sfizz/Synth.h +++ b/src/sfizz/Synth.h @@ -82,6 +82,10 @@ public: * */ Synth(); + /** + * @brief Destructor + */ + ~Synth(); /** * @brief Construct a new Synth object with a specified number of voices. *