diff --git a/SDL2pp/Audio.hh b/SDL2pp/Audio.hh index bb0f891..aa65313 100644 --- a/SDL2pp/Audio.hh +++ b/SDL2pp/Audio.hh @@ -42,7 +42,7 @@ private: static void SDLCallback(void *userdata, Uint8* stream, int len); public: - AudioSpec(int freq, SDL_AudioFormat format, Uint8 channels, Uint16 samples, AudioCallback&& callback); + AudioSpec(int freq, SDL_AudioFormat format, Uint8 channels, Uint16 samples, AudioCallback&& callback = AudioCallback()); ~AudioSpec(); AudioSpec(AudioSpec&& other); diff --git a/SDL2pp/AudioSpec.cc b/SDL2pp/AudioSpec.cc index 7eb5ff3..c82f5dd 100644 --- a/SDL2pp/AudioSpec.cc +++ b/SDL2pp/AudioSpec.cc @@ -30,15 +30,17 @@ void AudioSpec::SDLCallback(void *userdata, Uint8* stream, int len) { audiospec->callback_(stream, len); } -AudioSpec::AudioSpec(int freq, SDL_AudioFormat format, Uint8 channels, Uint16 samples, AudioCallback&& callback) +AudioSpec::AudioSpec(int freq, SDL_AudioFormat format, Uint8 channels, Uint16 samples, AudioSpec::AudioCallback&& callback) : callback_(std::move(callback)) { std::fill((char*)this, (char*)this + sizeof(SDL_AudioSpec), 0); SDL_AudioSpec::freq = freq; SDL_AudioSpec::format = format; SDL_AudioSpec::channels = channels; SDL_AudioSpec::samples = samples; - SDL_AudioSpec::callback = SDLCallback; - SDL_AudioSpec::userdata = static_cast(this); + if (callback) { + SDL_AudioSpec::callback = SDLCallback; + SDL_AudioSpec::userdata = static_cast(this); + } } AudioSpec::~AudioSpec() {