aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/sdl
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/sdl')
-rw-r--r--backends/platform/sdl/sdl.cpp21
-rw-r--r--backends/platform/sdl/sdl.h4
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();