From fbf2785211250816e59d8061465e401795320ce6 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sat, 28 Mar 2020 21:03:03 +0100 Subject: [PATCH] createFileWave returns a boolean --- src/sfizz/Synth.cpp | 3 +-- src/sfizz/Wavetables.cpp | 10 +++++----- src/sfizz/Wavetables.h | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/sfizz/Synth.cpp b/src/sfizz/Synth.cpp index 93b1475d..9ef64406 100644 --- a/src/sfizz/Synth.cpp +++ b/src/sfizz/Synth.cpp @@ -367,8 +367,7 @@ bool sfz::Synth::loadSfzFile(const fs::path& file) continue; } - const auto fileWave = resources.wavePool.createFileWave(resources.filePool, region->sample); - if (!fileWave) { + if (!resources.wavePool.createFileWave(resources.filePool, region->sample)) { removeCurrentRegion(); continue; } diff --git a/src/sfizz/Wavetables.cpp b/src/sfizz/Wavetables.cpp index 24a35bd7..34b1e46a 100644 --- a/src/sfizz/Wavetables.cpp +++ b/src/sfizz/Wavetables.cpp @@ -352,14 +352,14 @@ void WavetablePool::clearFileWaves() _fileWaves.clear(); } -const WavetableMulti* WavetablePool::createFileWave(FilePool& filePool, const std::string& filename) +bool WavetablePool::createFileWave(FilePool& filePool, const std::string& filename) { - if (const WavetableMulti* wave = getFileWave(filename)) - return wave; + if (_fileWaves.contains(filename)) + return true; auto fileHandle = filePool.loadFile(filename); if (!fileHandle) - return nullptr; + return false; if (fileHandle->information.numChannels > 1) DBG("[sfizz] Only the first channel of " << filename << " will be used to create the wavetable"); @@ -391,7 +391,7 @@ const WavetableMulti* WavetablePool::createFileWave(FilePool& filePool, const st WavetableMulti::createForHarmonicProfile(hp, 1.0)); _fileWaves[filename] = wave; - return wave.get(); + return true; } } // namespace sfz diff --git a/src/sfizz/Wavetables.h b/src/sfizz/Wavetables.h index f3ebd692..5bed0896 100644 --- a/src/sfizz/Wavetables.h +++ b/src/sfizz/Wavetables.h @@ -208,9 +208,9 @@ struct WavetablePool { * * @param filePool the file pool to use to load the file * @param filename the file name to load - * @return the wavetable + * @return true if the wavetable was correctly created (or existed already) */ - const WavetableMulti* createFileWave(FilePool& filePool, const std::string& filename); + bool createFileWave(FilePool& filePool, const std::string& filename); /** * @brief Removes all the stored file waves from the wavetable pool. */