summaryrefslogtreecommitdiff
path: root/src/audiofile.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/audiofile.h')
-rw-r--r--src/audiofile.h15
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{};
};