Provide default value for empty callback

This commit is contained in:
Dmitry Marakasov 2014-11-30 00:42:26 +03:00
parent fcf0302213
commit 724e3f37a8
2 changed files with 6 additions and 4 deletions

View File

@ -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);

View File

@ -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<void*>(this);
if (callback) {
SDL_AudioSpec::callback = SDLCallback;
SDL_AudioSpec::userdata = static_cast<void*>(this);
}
}
AudioSpec::~AudioSpec() {