diff --git a/src/audio/dummy_sfx.hpp b/src/audio/dummy_sfx.hpp index bc07f2184..f5d598abb 100644 --- a/src/audio/dummy_sfx.hpp +++ b/src/audio/dummy_sfx.hpp @@ -66,7 +66,7 @@ public: virtual SFXStatus getStatus() OVERRIDE { return SFX_STOPPED; } virtual void onSoundEnabledBack() OVERRIDE {} virtual void setRolloff(float rolloff) OVERRIDE {} - virtual const SFXBuffer* getBuffer() const OVERRIDE { return NULL; } + virtual SFXBuffer* getBuffer() const OVERRIDE { return NULL; } }; // DummySFX diff --git a/src/audio/sfx_base.hpp b/src/audio/sfx_base.hpp index 51131156c..6e18774f1 100644 --- a/src/audio/sfx_base.hpp +++ b/src/audio/sfx_base.hpp @@ -82,7 +82,7 @@ public: virtual void reallySetMasterVolumeNow(float gain) = 0; virtual void onSoundEnabledBack() = 0; virtual void setRolloff(float rolloff) = 0; - virtual const SFXBuffer* getBuffer() const = 0; + virtual SFXBuffer* getBuffer() const = 0; virtual SFXStatus getStatus() = 0; }; // SFXBase diff --git a/src/audio/sfx_manager.cpp b/src/audio/sfx_manager.cpp index a4691365f..8d56bddc8 100644 --- a/src/audio/sfx_manager.cpp +++ b/src/audio/sfx_manager.cpp @@ -941,6 +941,9 @@ void SFXManager::reallyResumeAllNow() for (std::vector::iterator i =m_all_sfx.getData().begin(); i!=m_all_sfx.getData().end(); i++) { + // Some buffer not added to m_all_sfx_types need to be loaded here + // For example sound for entering challenge house in overworld + (*i)->getBuffer()->load(); (*i)->reallyResumeNow(); } // for i in m_all_sfx m_all_sfx.unlock(); diff --git a/src/audio/sfx_openal.hpp b/src/audio/sfx_openal.hpp index 0fdc32a66..a6634d93c 100644 --- a/src/audio/sfx_openal.hpp +++ b/src/audio/sfx_openal.hpp @@ -114,7 +114,7 @@ public: // ------------------------------------------------------------------------ /** Returns the buffer associated with this sfx. */ - virtual const SFXBuffer* getBuffer() const OVERRIDE + virtual SFXBuffer* getBuffer() const OVERRIDE { return m_sound_buffer; } }; // SFXOpenAL