diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ba7febd1..1ee3d46d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Bug #4384: Resist Normal Weapons only checks ammunition for ranged weapons Bug #4411: Reloading a saved game while falling prevents damage in some cases Bug #4540: Rain delay when exiting water + Bug #4600: Crash when no sound output is available or --no-sound is used. Bug #4639: Black screen after completing first mages guild mission + training Bug #4701: PrisonMarker record is not hardcoded like other markers Bug #4703: Editor: it's possible to preview levelled list records diff --git a/apps/openmw/mwmechanics/character.cpp b/apps/openmw/mwmechanics/character.cpp index 7966526f2..00b3c0c67 100644 --- a/apps/openmw/mwmechanics/character.cpp +++ b/apps/openmw/mwmechanics/character.cpp @@ -983,7 +983,6 @@ void CharacterController::handleTextKey(const std::string &groupname, const std: if(evt.compare(0, 7, "sound: ") == 0) { MWBase::SoundManager *sndMgr = MWBase::Environment::get().getSoundManager(); - sndMgr->stopSound3D(mPtr, evt.substr(7)); sndMgr->playSound3D(mPtr, evt.substr(7), 1.0f, 1.0f); return; } @@ -1024,7 +1023,6 @@ void CharacterController::handleTextKey(const std::string &groupname, const std: } else { - sndMgr->stopSound3D(mPtr, sound); sndMgr->playSound3D(mPtr, sound, volume, pitch); } } diff --git a/apps/openmw/mwsound/soundmanagerimp.cpp b/apps/openmw/mwsound/soundmanagerimp.cpp index 77f25f326..aa1686f7c 100644 --- a/apps/openmw/mwsound/soundmanagerimp.cpp +++ b/apps/openmw/mwsound/soundmanagerimp.cpp @@ -747,6 +747,9 @@ namespace MWSound void SoundManager::stopSound(const std::string& soundId) { + if(!mOutput->isInitialized()) + return; + Sound_Buffer *sfx = loadSound(Misc::StringUtils::lowerCase(soundId)); if (!sfx) return; @@ -755,6 +758,9 @@ namespace MWSound void SoundManager::stopSound3D(const MWWorld::ConstPtr &ptr, const std::string& soundId) { + if(!mOutput->isInitialized()) + return; + Sound_Buffer *sfx = loadSound(Misc::StringUtils::lowerCase(soundId)); if (!sfx) return;