From 334e8d2f7d6db8598980d809c2035fd5a02a4353 Mon Sep 17 00:00:00 2001 From: jpbl <jpbl> Date: Wed, 11 Jan 2006 19:12:14 +0000 Subject: [PATCH] OpenAL compiling fixes --- src/audio/Makefile.am | 6 +----- src/audio/OpenAL/Device.hpp | 1 + src/audio/OpenAL/Makefile.am | 3 ++- src/audio/OpenAL/NullDevice.cpp | 4 ++++ src/audio/OpenAL/NullDevice.hpp | 1 + src/audio/OpenAL/OpenALDevice.cpp | 23 +++++++++++++++++++++-- src/audio/OpenAL/OpenALDevice.hpp | 1 + src/audio/OpenAL/OpenALLayer.cpp | 13 ------------- src/audio/OpenAL/OpenALLayer.hpp | 3 --- 9 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/audio/Makefile.am b/src/audio/Makefile.am index cbfb5d282e..d0fe8c8ee3 100644 --- a/src/audio/Makefile.am +++ b/src/audio/Makefile.am @@ -1,8 +1,4 @@ -if MAINTENER_CODE -maintener_directories = OpenAL -endif - -SUBDIRS = gsm pacpp ${maintener_directories} +SUBDIRS = gsm pacpp OpenAL noinst_LTLIBRARIES = libaudio.la diff --git a/src/audio/OpenAL/Device.hpp b/src/audio/OpenAL/Device.hpp index 751f380d58..143d2ff491 100644 --- a/src/audio/OpenAL/Device.hpp +++ b/src/audio/OpenAL/Device.hpp @@ -39,6 +39,7 @@ namespace SFLAudio * the load is successfull. */ virtual bool load() = 0; + virtual void unload() = 0; /** * This will create a context for the device. diff --git a/src/audio/OpenAL/Makefile.am b/src/audio/OpenAL/Makefile.am index 2da160d1ef..bdd8d3d9ae 100644 --- a/src/audio/OpenAL/Makefile.am +++ b/src/audio/OpenAL/Makefile.am @@ -1,3 +1,4 @@ +if MAINTENER_CODE noinst_PROGRAMS = example01 example02 noinst_LTLIBRARIES = libsflaudio.la @@ -26,5 +27,5 @@ LDADD = libsflaudio.la $(PORTAUDIO_LIBS) -lopenal ../pacpp/source/portaudiocpp/l example01_SOURCES = example01.cpp example02_SOURCES = example02.cpp - +endif diff --git a/src/audio/OpenAL/NullDevice.cpp b/src/audio/OpenAL/NullDevice.cpp index f48417fb10..cef84a8de2 100644 --- a/src/audio/OpenAL/NullDevice.cpp +++ b/src/audio/OpenAL/NullDevice.cpp @@ -42,6 +42,10 @@ SFLAudio::NullDevice::load() return true; } +void +SFLAudio::NullDevice::unload() +{} + bool SFLAudio::NullDevice::isNull() { diff --git a/src/audio/OpenAL/NullDevice.hpp b/src/audio/OpenAL/NullDevice.hpp index d783518adf..43387038ed 100644 --- a/src/audio/OpenAL/NullDevice.hpp +++ b/src/audio/OpenAL/NullDevice.hpp @@ -32,6 +32,7 @@ namespace SFLAudio Context *createContext(); virtual bool load(); + virtual void unload(); bool isNull(); }; } diff --git a/src/audio/OpenAL/OpenALDevice.cpp b/src/audio/OpenAL/OpenALDevice.cpp index 0389e9cc2f..87d6234f0e 100644 --- a/src/audio/OpenAL/OpenALDevice.cpp +++ b/src/audio/OpenAL/OpenALDevice.cpp @@ -18,6 +18,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <iostream> #include <AL/al.h> #include <AL/alc.h> @@ -30,16 +31,34 @@ SFLAudio::OpenALDevice::OpenALDevice() : mDevice(0) {} +SFLAudio::OpenALDevice::~OpenALDevice() +{ + unload(); +} + +void +SFLAudio::OpenALDevice::unload() { + if(mDevice) { + alcCloseDevice(mDevice); + mDevice = 0; + } +} + + bool SFLAudio::OpenALDevice::load() { - OpenALLayer::clearError(); mDevice = alcOpenDevice(0); - OpenALLayer::assertError(); + ALenum error = alcGetError(mDevice); + if (error != AL_NO_ERROR) { + std::cerr << "OpenAL::alcOpenDevice: " << alGetString(error) << std::endl; + unload(); + } if(mDevice != 0) { const ALCchar *device = alcGetString(mDevice, ALC_DEVICE_SPECIFIER); setName(device); } + return mDevice; } diff --git a/src/audio/OpenAL/OpenALDevice.hpp b/src/audio/OpenAL/OpenALDevice.hpp index 4701d53df5..33693d421f 100644 --- a/src/audio/OpenAL/OpenALDevice.hpp +++ b/src/audio/OpenAL/OpenALDevice.hpp @@ -31,6 +31,7 @@ namespace SFLAudio public: OpenALDevice(); virtual bool load(); + virtual void unload(); virtual Context *createContext(); private: diff --git a/src/audio/OpenAL/OpenALLayer.cpp b/src/audio/OpenAL/OpenALLayer.cpp index a3977a675f..bc530a2af4 100644 --- a/src/audio/OpenAL/OpenALLayer.cpp +++ b/src/audio/OpenAL/OpenALLayer.cpp @@ -74,17 +74,4 @@ SFLAudio::OpenALLayer::openDevice(const std::string &) return new NullDevice(); } -void -SFLAudio::OpenALLayer::assertError() -{ - ALenum error; - if ((error = alGetError()) != AL_NO_ERROR) { - std::cerr << "OpenAL::alcOpenDevice: " << alGetString(error) << std::endl; - } -} -void -SFLAudio::OpenALLayer::clearError() -{ - alGetError(); -} diff --git a/src/audio/OpenAL/OpenALLayer.hpp b/src/audio/OpenAL/OpenALLayer.hpp index ecea6ab510..1a04b027f0 100644 --- a/src/audio/OpenAL/OpenALLayer.hpp +++ b/src/audio/OpenAL/OpenALLayer.hpp @@ -33,9 +33,6 @@ namespace SFLAudio virtual std::list< std::string > getDevicesNames(); virtual Device *openDevice(); virtual Device *openDevice(const std::string &name); - - static void clearError(); - static void assertError(); }; } -- GitLab