diff options
Diffstat (limited to 'src/audiofile.h')
-rw-r--r-- | src/audiofile.h | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/audiofile.h b/src/audiofile.h index 504d0ae..cff4f3b 100644 --- a/src/audiofile.h +++ b/src/audiofile.h @@ -31,28 +31,31 @@ #include <vector> #include <limits> #include <mutex> +#include <atomic> #include "audio.h" #include "channel.h" #include "logger.h" +#include "owner.h" class InstrumentChannel; class AudioFile { public: - AudioFile(const std::string& filename, std::size_t filechannel, + AudioFile(std::string filename, std::size_t filechannel, InstrumentChannel* instrument_channel = nullptr); ~AudioFile(); - void load(LogFunction logger, std::size_t sample_limit = std::numeric_limits<std::size_t>::max()); + void load(const LogFunction& logger, + std::size_t sample_limit = std::numeric_limits<std::size_t>::max()); void unload(); bool isLoaded() const; volatile std::size_t size{0}; // Full size of the file volatile std::size_t preloadedsize{0}; // Number of samples preloaded (in data) - sample_t* data{nullptr}; + gsl::owner<sample_t*> data{nullptr}; std::string filename; @@ -70,7 +73,7 @@ private: friend class DOMLoaderTest; friend class InstrumentParserTest; - void* magic{nullptr}; - volatile bool is_loaded{false}; - InstrumentChannel* instrument_channel; + void* magic{}; + std::atomic<bool> is_loaded{false}; + InstrumentChannel* instrument_channel{}; }; |