diff --git a/src/modules/audio/Source.h b/src/modules/audio/Source.h index c1fd71893..17d2da1b0 100644 --- a/src/modules/audio/Source.h +++ b/src/modules/audio/Source.h @@ -109,12 +109,12 @@ public: virtual int getChannels() const = 0; - virtual bool setFilter(std::map ¶ms) = 0; + virtual bool setFilter(const std::map ¶ms) = 0; virtual bool setFilter() = 0; virtual bool getFilter(std::map ¶ms) = 0; virtual bool setSceneEffect(int slot, int effect) = 0; - virtual bool setSceneEffect(int slot, int effect, std::map ¶ms) = 0; + virtual bool setSceneEffect(int slot, int effect, const std::map ¶ms) = 0; virtual bool setSceneEffect(int slot) = 0; virtual bool getSceneEffect(int slot, int &effect, std::map ¶ms) = 0; diff --git a/src/modules/audio/null/Source.cpp b/src/modules/audio/null/Source.cpp index eea9306fa..17550f0aa 100644 --- a/src/modules/audio/null/Source.cpp +++ b/src/modules/audio/null/Source.cpp @@ -239,7 +239,7 @@ bool Source::queue(void *, size_t, int, int, int) return false; } -bool Source::setFilter(std::map &) +bool Source::setFilter(const std::map &) { return false; } @@ -259,7 +259,7 @@ bool Source::setSceneEffect(int, int) return false; } -bool Source::setSceneEffect(int, int, std::map &) +bool Source::setSceneEffect(int, int, const std::map &) { return false; } diff --git a/src/modules/audio/null/Source.h b/src/modules/audio/null/Source.h index eaeaea96d..c71d62004 100644 --- a/src/modules/audio/null/Source.h +++ b/src/modules/audio/null/Source.h @@ -82,12 +82,12 @@ public: virtual int getFreeBufferCount() const; virtual bool queue(void *data, size_t length, int dataSampleRate, int dataBitDepth, int dataChannels); - virtual bool setFilter(std::map ¶ms); + virtual bool setFilter(const std::map ¶ms); virtual bool setFilter(); virtual bool getFilter(std::map ¶ms); virtual bool setSceneEffect(int slot, int effect); - virtual bool setSceneEffect(int slot, int effect, std::map ¶ms); + virtual bool setSceneEffect(int slot, int effect, const std::map ¶ms); virtual bool setSceneEffect(int slot); virtual bool getSceneEffect(int slot, int &effect, std::map ¶ms); diff --git a/src/modules/audio/openal/Audio.cpp b/src/modules/audio/openal/Audio.cpp index 211256168..3c86dd784 100644 --- a/src/modules/audio/openal/Audio.cpp +++ b/src/modules/audio/openal/Audio.cpp @@ -155,11 +155,15 @@ Audio::Audio() { for (auto c : capture) delete c; + #ifdef ALC_EXT_EFX if (alDeleteAuxiliaryEffectSlots) + { for (auto slot : effectSlots) alDeleteAuxiliaryEffectSlots(1, &slot); + } #endif + alcMakeContextCurrent(nullptr); alcDestroyContext(context); alcCloseDevice(device); @@ -177,15 +181,22 @@ Audio::~Audio() delete poolThread; delete pool; + for (auto c : capture) delete c; + #ifdef ALC_EXT_EFX for (auto e : effects) + { if (e != nullptr) delete e; + } + if (alDeleteAuxiliaryEffectSlots) + { for (auto slot : effectSlots) alDeleteAuxiliaryEffectSlots(1, &slot); + } #endif alcMakeContextCurrent(nullptr); alcDestroyContext(context); @@ -458,7 +469,7 @@ bool Audio::setSceneEffect(int slot, std::map ¶ms) #ifdef ALC_EXT_EFX if (alAuxiliaryEffectSloti) { - if (result == true) + if (result) { if (params.find(Effect::EFFECT_VOLUME) != params.end()) alAuxiliaryEffectSlotf(effectSlots[slot], AL_EFFECTSLOT_GAIN, params[Effect::EFFECT_VOLUME]); diff --git a/src/modules/audio/openal/Source.cpp b/src/modules/audio/openal/Source.cpp index 79b290353..8836b965c 100644 --- a/src/modules/audio/openal/Source.cpp +++ b/src/modules/audio/openal/Source.cpp @@ -244,8 +244,10 @@ Source::~Source() delete directfilter; for (auto sf : sendfilters) + { if (sf != nullptr) delete sf; + } } love::audio::Source *Source::clone() @@ -1252,7 +1254,7 @@ int Source::getChannels() const return channels; } -bool Source::setFilter(std::map ¶ms) +bool Source::setFilter(const std::map ¶ms) { if (!directfilter) directfilter = new Filter(); @@ -1322,7 +1324,7 @@ bool Source::setSceneEffect(int slot, int effect) return true; } -bool Source::setSceneEffect(int slot, int effect, std::map ¶ms) +bool Source::setSceneEffect(int slot, int effect, const std::map ¶ms) { if (slot < 0 || slot >= (int)sendtargets.size()) return false; diff --git a/src/modules/audio/openal/Source.h b/src/modules/audio/openal/Source.h index 036df396f..f5561bfb1 100644 --- a/src/modules/audio/openal/Source.h +++ b/src/modules/audio/openal/Source.h @@ -146,12 +146,12 @@ public: virtual float getAirAbsorptionFactor() const; virtual int getChannels() const; - virtual bool setFilter(std::map ¶ms); + virtual bool setFilter(const std::map ¶ms); virtual bool setFilter(); virtual bool getFilter(std::map ¶ms); virtual bool setSceneEffect(int slot, int effect); - virtual bool setSceneEffect(int slot, int effect, std::map ¶ms); + virtual bool setSceneEffect(int slot, int effect, const std::map ¶ms); virtual bool setSceneEffect(int slot); virtual bool getSceneEffect(int slot, int &effect, std::map ¶ms);