diff --git a/src/sfizz/Config.h b/src/sfizz/Config.h index 204539ec..a284f790 100644 --- a/src/sfizz/Config.h +++ b/src/sfizz/Config.h @@ -43,6 +43,7 @@ namespace config { constexpr int maxBlockSize { 8192 }; constexpr int preloadSize { 8192 }; constexpr int loggerQueueSize { 16 }; + constexpr bool loggingEnabled { true }; constexpr size_t numChannels { 2 }; constexpr int numBackgroundThreads { 4 }; constexpr int numVoices { 64 }; diff --git a/src/sfizz/Logger.cpp b/src/sfizz/Logger.cpp index 7de5b20a..ab96ded0 100644 --- a/src/sfizz/Logger.cpp +++ b/src/sfizz/Logger.cpp @@ -50,6 +50,9 @@ sfz::Logger::~Logger() keepRunning.clear(); loggingThread.join(); + if (!loggingEnabled) + return; + if (!fileTimes.empty()) { std::stringstream fileLogFilename; fileLogFilename << this << "_" @@ -85,11 +88,17 @@ sfz::Logger::~Logger() void sfz::Logger::logCallbackTime(std::chrono::duration duration, int numVoices, int numSamples) { + if (!loggingEnabled) + return; + callbackTimeQueue.try_push({ duration, numVoices, numSamples }); } void sfz::Logger::logFileTime(std::chrono::duration waitDuration, std::chrono::duration loadDuration, uint32_t fileSize, absl::string_view filename) { + if (!loggingEnabled) + return; + fileTimeQueue.try_push({ waitDuration, loadDuration, fileSize, filename }); } @@ -123,3 +132,14 @@ void sfz::Logger::moveEvents() std::this_thread::sleep_for(50ms); } } + +void sfz::Logger::enableLogging() +{ + loggingEnabled = false; +} + +void sfz::Logger::disableLogging() +{ + loggingEnabled = false; + clearFlag.clear(); +} diff --git a/src/sfizz/Logger.h b/src/sfizz/Logger.h index 2bd1f6bd..a1a1bae7 100644 --- a/src/sfizz/Logger.h +++ b/src/sfizz/Logger.h @@ -55,11 +55,13 @@ public: ~Logger(); void setPrefix(const std::string& prefix); void clear(); + void enableLogging(); + void disableLogging(); void logCallbackTime(std::chrono::duration duration, int numVoices, int numSamples); void logFileTime(std::chrono::duration waitDuration, std::chrono::duration loadDuration, uint32_t fileSize, absl::string_view filename); private: void moveEvents(); - + bool loggingEnabled { config::loggingEnabled }; std::string prefix { "" }; atomic_queue::AtomicQueue2 callbackTimeQueue; @@ -67,7 +69,6 @@ private: std::vector callbackTimes; std::vector fileTimes; - std::atomic_flag keepRunning; std::atomic_flag clearFlag; std::thread loggingThread;