From d1c542ce0551f6ec3408b7c6689ad17b0a14e8d2 Mon Sep 17 00:00:00 2001 From: Joerg Mueller Date: Fri, 3 Jun 2011 23:28:57 +0000 Subject: 3D Audio GSoC: Memory management improvements. --- intern/audaspace/OpenAL/AUD_OpenALDevice.cpp | 17 +++++------------ intern/audaspace/OpenAL/AUD_OpenALDevice.h | 4 ++-- 2 files changed, 7 insertions(+), 14 deletions(-) (limited to 'intern/audaspace/OpenAL') diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp index b9e30bbf62a..a3b0bff316e 100644 --- a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp +++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp @@ -52,7 +52,7 @@ struct AUD_OpenALHandle : AUD_Handle bool isBuffered; /// The reader source. - AUD_IReader* reader; + AUD_Reference reader; /// Whether to keep the source if end of it is reached. bool keep; @@ -382,7 +382,6 @@ AUD_OpenALDevice::~AUD_OpenALDevice() alDeleteSources(1, &sound->source); if(!sound->isBuffered) { - delete sound->reader; alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers); } delete sound; @@ -396,7 +395,6 @@ AUD_OpenALDevice::~AUD_OpenALDevice() alDeleteSources(1, &sound->source); if(!sound->isBuffered) { - delete sound->reader; alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers); } delete sound; @@ -539,7 +537,7 @@ static const char* queue_error = "AUD_OpenALDevice: Buffer couldn't be " static const char* bufferdata_error = "AUD_OpenALDevice: Buffer couldn't be " "filled with data."; -AUD_Handle* AUD_OpenALDevice::play(AUD_IReader* reader, bool keep) +AUD_Handle* AUD_OpenALDevice::play(AUD_Reference reader, bool keep) { AUD_OpenALHandle* sound = NULL; @@ -568,7 +566,6 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IReader* reader, bool keep) if(!valid) { delete sound; - delete reader; return NULL; } @@ -624,7 +621,6 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IReader* reader, bool keep) catch(AUD_Exception&) { delete sound; - delete reader; alcProcessContext(m_context); unlock(); throw; @@ -642,8 +638,9 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IReader* reader, bool keep) return sound; } -AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep) +AUD_Handle* AUD_OpenALDevice::play(AUD_Reference factory, bool keep) { + /* AUD_XXX disabled AUD_OpenALHandle* sound = NULL; lock(); @@ -713,7 +710,7 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep) unlock(); if(sound) - return sound; + return sound;*/ return play(factory->createReader(), keep); } @@ -785,7 +782,6 @@ bool AUD_OpenALDevice::stop(AUD_Handle* handle) alDeleteSources(1, &sound->source); if(!sound->isBuffered) { - delete sound->reader; alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers); } delete *i; @@ -805,7 +801,6 @@ bool AUD_OpenALDevice::stop(AUD_Handle* handle) alDeleteSources(1, &sound->source); if(!sound->isBuffered) { - delete sound->reader; alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers); } delete *i; @@ -1109,7 +1104,6 @@ bool AUD_OpenALDevice::bufferFactory(void *value) if(!getFormat(format, specs.specs)) { - delete reader; return false; } @@ -1147,7 +1141,6 @@ bool AUD_OpenALDevice::bufferFactory(void *value) catch(AUD_Exception&) { delete bf; - delete reader; alcProcessContext(m_context); unlock(); return false; diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.h b/intern/audaspace/OpenAL/AUD_OpenALDevice.h index 3bbbe85d7e6..3bca47f1805 100644 --- a/intern/audaspace/OpenAL/AUD_OpenALDevice.h +++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.h @@ -147,8 +147,8 @@ public: virtual ~AUD_OpenALDevice(); virtual AUD_DeviceSpecs getSpecs() const; - virtual AUD_Handle* play(AUD_IReader* reader, bool keep = false); - virtual AUD_Handle* play(AUD_IFactory* factory, bool keep = false); + virtual AUD_Handle* play(AUD_Reference reader, bool keep = false); + virtual AUD_Handle* play(AUD_Reference factory, bool keep = false); virtual bool pause(AUD_Handle* handle); virtual bool resume(AUD_Handle* handle); virtual bool stop(AUD_Handle* handle); -- cgit v1.2.3