From be7b46f7d9a53cb13d9d3ac5374632791853deda Mon Sep 17 00:00:00 2001 From: Benau Date: Sat, 15 May 2021 00:03:06 +0800 Subject: [PATCH] Fix missing initialization of some sound buffer --- src/audio/dummy_sfx.hpp | 2 +- src/audio/sfx_base.hpp | 2 +- src/audio/sfx_manager.cpp | 3 +++ src/audio/sfx_openal.hpp | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) 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