aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/audio
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/audio')
-rw-r--r--src/libjin/audio/audio.cpp13
-rw-r--r--src/libjin/audio/audio.h12
-rw-r--r--src/libjin/audio/sdl/audio.cpp7
-rw-r--r--src/libjin/audio/sdl/audio.h14
4 files changed, 11 insertions, 35 deletions
diff --git a/src/libjin/audio/audio.cpp b/src/libjin/audio/audio.cpp
index edba496..350af51 100644
--- a/src/libjin/audio/audio.cpp
+++ b/src/libjin/audio/audio.cpp
@@ -7,18 +7,5 @@ namespace jin
namespace audio
{
- shared Audio* Audio::audio = NULL;
-
- bool Audio::init(const SettingBase* setting)
- {
- static bool result = _init(setting);
- return result;
- }
-
- void Audio::quit()
- {
- CallOnce(_quit());
- }
-
}
} \ No newline at end of file
diff --git a/src/libjin/audio/audio.h b/src/libjin/audio/audio.h
index 4c8b35b..ccfc8a1 100644
--- a/src/libjin/audio/audio.h
+++ b/src/libjin/audio/audio.h
@@ -12,14 +12,12 @@ namespace audio
{
class Source;
- class Audio : public Subsystem
+ template<class T>
+ class Audio : public Subsystem<T>
{
public:
- Audio() {};
- virtual ~Audio() {};
-
virtual void play() = 0;
virtual void stop() = 0;
virtual bool pause() = 0;
@@ -30,12 +28,10 @@ namespace audio
virtual void setVolume(float volume) = 0;
virtual float getVolume() = 0;
- bool init(const SettingBase* setting) override;
- void quit() override;
-
protected:
- static Audio* audio;
+ Audio() {};
+ virtual ~Audio() {};
};
diff --git a/src/libjin/audio/sdl/audio.cpp b/src/libjin/audio/sdl/audio.cpp
index 79ca3f2..8a0fc86 100644
--- a/src/libjin/audio/sdl/audio.cpp
+++ b/src/libjin/audio/sdl/audio.cpp
@@ -18,8 +18,10 @@ namespace audio
audio->unlock();
}
- onlyonce bool SDLAudio::_init(const SettingBase* s)
+ onlyonce bool SDLAudio::initSystem(const SettingBase* s)
{
+ std::cout << "Init Audio System" << std::endl;
+
if (SDL_Init(SDL_INIT_AUDIO) < 0)
return false;
SDL_AudioSpec spec;
@@ -45,10 +47,9 @@ namespace audio
return true;
}
- onlyonce void SDLAudio::_quit()
+ onlyonce void SDLAudio::quitSystem()
{
SDL_CloseAudio();
- delete audio;
}
void SDLAudio::lock()
diff --git a/src/libjin/audio/sdl/audio.h b/src/libjin/audio/sdl/audio.h
index 6e42690..953a853 100644
--- a/src/libjin/audio/sdl/audio.h
+++ b/src/libjin/audio/sdl/audio.h
@@ -13,7 +13,7 @@ namespace audio
#define SDLAUDIO_BYTEDEPTH (SDLAUDIO_BITDEPTH >> 3)
#define SDLAUDIO_CHANNELS 2
- class SDLAudio : public Audio
+ class SDLAudio : public Audio<SDLAudio>
{
public:
@@ -25,11 +25,6 @@ namespace audio
int samples; // sample<=samplerate
};
- static inline Audio* get()
- {
- return audio != NULL ? audio : (audio = new SDLAudio());
- }
-
/* IAudio interface */
void play() override;
void stop() override;
@@ -50,11 +45,8 @@ namespace audio
private:
- SDLAudio() {}
- ~SDLAudio() {}
-
- onlyonce bool _init(const SettingBase* setting) override;
- onlyonce void _quit() override;
+ onlyonce bool initSystem(const SettingBase* setting) override;
+ onlyonce void quitSystem() override;
unsigned int audioDevice;