diff options
Diffstat (limited to 'backends/platform/sdl')
-rw-r--r-- | backends/platform/sdl/sdl.cpp | 21 | ||||
-rw-r--r-- | backends/platform/sdl/sdl.h | 4 |
2 files changed, 19 insertions, 6 deletions
diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp index b3b99a2e3a..e9b35fae32 100644 --- a/backends/platform/sdl/sdl.cpp +++ b/backends/platform/sdl/sdl.cpp @@ -34,7 +34,6 @@ #include "backends/audiocd/sdl/sdl-audiocd.h" #include "backends/events/sdl/sdl-events.h" #include "backends/mutex/sdl/sdl-mutex.h" -#include "backends/mixer/sdl/sdl-mixer.h" #include "backends/timer/sdl/sdl-timer.h" #include "icons/scummvm.xpm" @@ -46,7 +45,8 @@ OSystem_SDL::OSystem_SDL() : _inited(false), - _initedSDL(false) { + _initedSDL(false), + _mixerManager(0) { } @@ -72,8 +72,12 @@ void OSystem_SDL::initBackend() { if (_savefileManager == 0) _savefileManager = new DefaultSaveFileManager(); - if (_mixer == 0) - _mixer = new SdlMixerImpl(this); + if (_mixerManager == 0) { + _mixerManager = new SdlMixerManager(); + + // Setup and start mixer + _mixerManager->init(); + } if (_timerManager == 0) _timerManager = new SdlTimerManager(); @@ -166,8 +170,8 @@ void OSystem_SDL::deinit() { _graphicsManager = 0; delete _audiocdManager; _audiocdManager = 0; - delete _mixer; - _mixer = 0; + delete _mixerManager; + _mixerManager = 0; delete _timerManager; _timerManager = 0; delete _mutexManager; @@ -263,3 +267,8 @@ void OSystem_SDL::getTimeAndDate(TimeDate &td) const { td.tm_mon = t.tm_mon; td.tm_year = t.tm_year; } + +Audio::Mixer *OSystem_SDL::getMixer() { + assert(_mixerManager); + return _mixerManager->getMixer(); +} diff --git a/backends/platform/sdl/sdl.h b/backends/platform/sdl/sdl.h index 40fbcd9d37..ec6432830b 100644 --- a/backends/platform/sdl/sdl.h +++ b/backends/platform/sdl/sdl.h @@ -34,6 +34,7 @@ #include "backends/modular-backend.h" #include "backends/graphics/sdl/sdl-graphics.h" +#include "backends/mixer/sdl/sdl-mixer.h" class OSystem_SDL : public ModularBackend { public: @@ -61,9 +62,12 @@ public: virtual void delayMillis(uint msecs); virtual void getTimeAndDate(TimeDate &td) const; + virtual Audio::Mixer *getMixer(); + protected: bool _inited; bool _initedSDL; + SdlMixerManager *_mixerManager; virtual void initSDL(); |