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); static void SDLCallback(void *userdata, Uint8* stream, int len);
public: 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(AudioSpec&& other); AudioSpec(AudioSpec&& other);

View File

@ -30,16 +30,18 @@ void AudioSpec::SDLCallback(void *userdata, Uint8* stream, int len) {
audiospec->callback_(stream, 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)) { : callback_(std::move(callback)) {
std::fill((char*)this, (char*)this + sizeof(SDL_AudioSpec), 0); std::fill((char*)this, (char*)this + sizeof(SDL_AudioSpec), 0);
SDL_AudioSpec::freq = freq; SDL_AudioSpec::freq = freq;
SDL_AudioSpec::format = format; SDL_AudioSpec::format = format;
SDL_AudioSpec::channels = channels; SDL_AudioSpec::channels = channels;
SDL_AudioSpec::samples = samples; SDL_AudioSpec::samples = samples;
if (callback) {
SDL_AudioSpec::callback = SDLCallback; SDL_AudioSpec::callback = SDLCallback;
SDL_AudioSpec::userdata = static_cast<void*>(this); SDL_AudioSpec::userdata = static_cast<void*>(this);
} }
}
AudioSpec::~AudioSpec() { AudioSpec::~AudioSpec() {
} }