diff options
Diffstat (limited to 'backends/mixer/sdl')
-rw-r--r-- | backends/mixer/sdl/sdl-mixer.cpp | 19 | ||||
-rw-r--r-- | backends/mixer/sdl/sdl-mixer.h | 5 |
2 files changed, 23 insertions, 1 deletions
diff --git a/backends/mixer/sdl/sdl-mixer.cpp b/backends/mixer/sdl/sdl-mixer.cpp index aa87fcb345..2317a03335 100644 --- a/backends/mixer/sdl/sdl-mixer.cpp +++ b/backends/mixer/sdl/sdl-mixer.cpp @@ -35,7 +35,8 @@ SdlMixerManager::SdlMixerManager() : - _mixer(0) { + _mixer(0), + _audioSuspended(false) { } @@ -120,4 +121,20 @@ void SdlMixerManager::sdlCallback(void *this_, byte *samples, int len) { manager->callbackHandler(samples, len); } +void SdlMixerManager::suspendAudio() { + SDL_CloseAudio(); + _audioSuspended = true; +} + +int SdlMixerManager::resumeAudio() { + if (!_audioSuspended) + return -2; + if (SDL_OpenAudio(&_obtainedRate, NULL) < 0){ + return -1; + } + SDL_PauseAudio(0); + _audioSuspended = false; + return 0; +} + #endif diff --git a/backends/mixer/sdl/sdl-mixer.h b/backends/mixer/sdl/sdl-mixer.h index e4e8263f38..f58260fef2 100644 --- a/backends/mixer/sdl/sdl-mixer.h +++ b/backends/mixer/sdl/sdl-mixer.h @@ -43,9 +43,14 @@ public: Audio::Mixer *getMixer() { return (Audio::Mixer *)_mixer; } + // Used by LinuxMoto Port + virtual void suspendAudio(); + virtual int resumeAudio(); + protected: Audio::MixerImpl *_mixer; SDL_AudioSpec _obtainedRate; + bool _audioSuspended; virtual SDL_AudioSpec getAudioSpec(); virtual void startAudio(); |