From 60ae910faf01025ed0fbbfcd95e5a9bef5422060 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sun, 7 Feb 2021 00:18:47 +0100 Subject: [PATCH 1/2] Corrected a compile error on gcc 9.3 Removed the leak detector, which allows for POD data structures with no default functions. This way the `noexcept` specifier on the `atomic_queue` is actually valid, since the `FileTime` and `CallbackTime` objects can be built without throwing. --- src/sfizz/Logger.h | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/sfizz/Logger.h b/src/sfizz/Logger.h index de7e8beb6..4e39471bb 100644 --- a/src/sfizz/Logger.h +++ b/src/sfizz/Logger.h @@ -48,18 +48,10 @@ struct ScopedTiming struct FileTime { - FileTime() = default; - FileTime(Duration waitDuration, Duration loadDuration, uint32_t fileSize, absl::string_view filename) - : waitDuration(waitDuration), loadDuration(loadDuration), fileSize(fileSize), filename(filename) { } - FileTime(const FileTime&) = default; - FileTime& operator=(const FileTime&) = default; - FileTime(FileTime&&) = default; - FileTime& operator=(FileTime&&) = default; Duration waitDuration { 0 }; Duration loadDuration { 0 }; uint32_t fileSize { 0 }; absl::string_view filename {}; - LEAK_DETECTOR(FileTime); }; struct CallbackBreakdown @@ -71,22 +63,13 @@ struct CallbackBreakdown Duration filters { 0 }; Duration panning { 0 }; Duration effects { 0 }; - LEAK_DETECTOR(CallbackBreakdown); }; struct CallbackTime { - CallbackTime() = default; - CallbackTime(const CallbackBreakdown& breakdown, int numVoices, size_t numSamples) - : breakdown(breakdown), numVoices(numVoices), numSamples(numSamples) { } - CallbackTime(const CallbackTime&) = default; - CallbackTime& operator=(const CallbackTime&) = default; - CallbackTime(CallbackTime&&) = default; - CallbackTime& operator=(CallbackTime&&) = default; CallbackBreakdown breakdown {}; int numVoices { 0 }; size_t numSamples { 0 }; - LEAK_DETECTOR(CallbackTime); }; class Logger From a7cfb8429c2995b5db93d2e47abc1a36a1f45a7f Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Mon, 8 Feb 2021 12:02:26 +0100 Subject: [PATCH 2/2] Fixups for MOD --- src/sfizz/Logger.cpp | 13 +++++++++++-- src/sfizz/Logger.h | 3 +++ tests/SynthT.cpp | 8 ++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/sfizz/Logger.cpp b/src/sfizz/Logger.cpp index 73b07e86d..89e777676 100644 --- a/src/sfizz/Logger.cpp +++ b/src/sfizz/Logger.cpp @@ -102,7 +102,11 @@ void sfz::Logger::logCallbackTime(const CallbackBreakdown& breakdown, int numVoi if (!loggingEnabled) return; - callbackTimeQueue.try_push({ breakdown, numVoices, numSamples }); + CallbackTime callbackTime; + callbackTime.breakdown = breakdown; + callbackTime.numVoices = numVoices; + callbackTime.numSamples = numSamples; + callbackTimeQueue.try_push(callbackTime); } void sfz::Logger::logFileTime(std::chrono::duration waitDuration, std::chrono::duration loadDuration, uint32_t fileSize, absl::string_view filename) @@ -110,7 +114,12 @@ void sfz::Logger::logFileTime(std::chrono::duration waitDuration, std::c if (!loggingEnabled) return; - fileTimeQueue.try_push({ waitDuration, loadDuration, fileSize, filename }); + FileTime fileTime; + fileTime.waitDuration = waitDuration; + fileTime.loadDuration = loadDuration; + fileTime.fileSize = fileSize; + fileTime.filename = filename; + fileTimeQueue.try_push(fileTime); } void sfz::Logger::setPrefix(absl::string_view prefix) diff --git a/src/sfizz/Logger.h b/src/sfizz/Logger.h index 4e39471bb..aa0d3953c 100644 --- a/src/sfizz/Logger.h +++ b/src/sfizz/Logger.h @@ -52,6 +52,7 @@ struct FileTime Duration loadDuration { 0 }; uint32_t fileSize { 0 }; absl::string_view filename {}; + LEAK_DETECTOR(FileTime); }; struct CallbackBreakdown @@ -63,6 +64,7 @@ struct CallbackBreakdown Duration filters { 0 }; Duration panning { 0 }; Duration effects { 0 }; + LEAK_DETECTOR(CallbackBreakdown); }; struct CallbackTime @@ -70,6 +72,7 @@ struct CallbackTime CallbackBreakdown breakdown {}; int numVoices { 0 }; size_t numSamples { 0 }; + LEAK_DETECTOR(CallbackTime); }; class Logger diff --git a/tests/SynthT.cpp b/tests/SynthT.cpp index b9bf7ab82..2420df44d 100644 --- a/tests/SynthT.cpp +++ b/tests/SynthT.cpp @@ -515,10 +515,10 @@ TEST_CASE("[Synth] veltrack") }; const VeltrackData veltrackdata[] = { - { 25, veldata25 }, - { 50, veldata50 }, - { 75, veldata75 }, - { 100, veldata100 }, + { 25, absl::MakeConstSpan(veldata25) }, + { 50, absl::MakeConstSpan(veldata50) }, + { 75, absl::MakeConstSpan(veldata75) }, + { 100, absl::MakeConstSpan(veldata100) }, }; for (const VeltrackData& vt : veltrackdata) {