From 2b876d33fffe37b46e30023545d56c5dcb558ee2 Mon Sep 17 00:00:00 2001 From: Alex Szpakowski Date: Sun, 9 Jul 2017 21:45:43 -0300 Subject: [PATCH] Attempt to fix VS2013 compilation error; fix a couple logic errors in the audio Source implementation. --HG-- branch : minor --- src/modules/audio/openal/Source.cpp | 9 +++++++-- src/modules/audio/openal/Source.h | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/modules/audio/openal/Source.cpp b/src/modules/audio/openal/Source.cpp index cbaa68686..0bb68c287 100644 --- a/src/modules/audio/openal/Source.cpp +++ b/src/modules/audio/openal/Source.cpp @@ -265,7 +265,10 @@ Source::Source(const Source &s) directfilter = s.directfilter->clone(); for (auto e : s.effectmap) - effectmap[e.first] = { e.second.filter ? e.second.filter->clone() : nullptr, e.second.slot, e.second.target }; + { + Filter *filter = e.second.filter ? e.second.filter->clone() : nullptr; + effectmap[e.first] = { filter, e.second.slot, e.second.target }; + } setFloatv(position, s.position); setFloatv(velocity, s.velocity); @@ -278,8 +281,10 @@ Source::Source(const Source &s) for (auto e : effectmap) { if (e.second.slot) + { push = false; break; + } } if (push) slotlist.push(i); @@ -1408,7 +1413,7 @@ bool Source::setEffect(const char *name) bool Source::setEffect(const char *name, const std::map ¶ms) { ALuint slot, target; - Filter *filter; + Filter *filter = nullptr; // effect with this name doesn't exist if (!dynamic_cast(audiomodule())->getEffectID(name, target)) diff --git a/src/modules/audio/openal/Source.h b/src/modules/audio/openal/Source.h index 2e6f1cd39..5d70c0ad9 100644 --- a/src/modules/audio/openal/Source.h +++ b/src/modules/audio/openal/Source.h @@ -233,7 +233,7 @@ private: Filter *filter; ALuint slot, target; }; - std::map effectmap; + std::map effectmap; std::stack slotlist; }; // Source