1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-12 03:36:32 +00:00

Correction of sigsegv.

This commit is contained in:
Miroslav Puda 2013-06-19 19:37:35 +02:00
parent f9940413fd
commit 26a6bdb27d

View File

@ -118,9 +118,9 @@ float WeatherManager::calculateAngleFade (const std::string& moonName, float ang
} }
WeatherManager::WeatherManager(MWRender::RenderingManager* rendering,MWWorld::Fallback* fallback) : WeatherManager::WeatherManager(MWRender::RenderingManager* rendering,MWWorld::Fallback* fallback) :
mHour(14), mCurrentWeather(Weather::Type_Clear), mFirstUpdate(true), mWeatherUpdateTime(0), mHour(14), mCurrentWeather(Weather::Type_Clear), mNextWeather(Weather::Type_Unknown),
mThunderFlash(0), mThunderChance(0), mThunderChanceNeeded(50), mThunderSoundDelay(0), mFirstUpdate(true), mWeatherUpdateTime(0), mThunderFlash(0), mThunderChance(0),
mRemainingTransitionTime(0), mMonth(0), mDay(0), mThunderChanceNeeded(50), mThunderSoundDelay(0), mRemainingTransitionTime(0), mMonth(0), mDay(0),
mTimePassed(0), mFallback(fallback), mWindSpeed(0.f), mRendering(rendering) mTimePassed(0), mFallback(fallback), mWindSpeed(0.f), mRendering(rendering)
{ {
//Globals //Globals
@ -545,14 +545,14 @@ void WeatherManager::update(float duration)
if (mNextWeather == Weather::Type_Unknown) if (mNextWeather == Weather::Type_Unknown)
{ {
std::string ambientSnd = mWeatherSettings[mCurrentWeather].mAmbientLoopSoundID; std::string ambientSnd = mWeatherSettings[mCurrentWeather].mAmbientLoopSoundID;
if (std::find(mSoundsPlaying.begin(), mSoundsPlaying.end(), ambientSnd) == mSoundsPlaying.end()) if (!ambientSnd.empty() && std::find(mSoundsPlaying.begin(), mSoundsPlaying.end(), ambientSnd) == mSoundsPlaying.end())
{ {
mSoundsPlaying.push_back(ambientSnd); mSoundsPlaying.push_back(ambientSnd);
MWBase::Environment::get().getSoundManager()->playSound(ambientSnd, 1.0, 1.0, MWBase::SoundManager::Play_Loop); MWBase::Environment::get().getSoundManager()->playSound(ambientSnd, 1.0, 1.0, MWBase::SoundManager::Play_Loop);
} }
std::string rainSnd = mWeatherSettings[mCurrentWeather].mRainLoopSoundID; std::string rainSnd = mWeatherSettings[mCurrentWeather].mRainLoopSoundID;
if (std::find(mSoundsPlaying.begin(), mSoundsPlaying.end(), rainSnd) == mSoundsPlaying.end()) if (!rainSnd.empty() && std::find(mSoundsPlaying.begin(), mSoundsPlaying.end(), rainSnd) == mSoundsPlaying.end())
{ {
mSoundsPlaying.push_back(rainSnd); mSoundsPlaying.push_back(rainSnd);
MWBase::Environment::get().getSoundManager()->playSound(rainSnd, 1.0, 1.0, MWBase::SoundManager::Play_Loop); MWBase::Environment::get().getSoundManager()->playSound(rainSnd, 1.0, 1.0, MWBase::SoundManager::Play_Loop);
@ -568,14 +568,14 @@ void WeatherManager::stopSounds(bool stopAll)
while (it!=mSoundsPlaying.end()) while (it!=mSoundsPlaying.end())
{ {
if (stopAll || \ if (stopAll || \
!(*it == mWeatherSettings[mCurrentWeather].mAmbientLoopSoundID || \ !((*it == mWeatherSettings[mCurrentWeather].mAmbientLoopSoundID) || \
*it == mWeatherSettings[mCurrentWeather].mRainLoopSoundID)) (*it == mWeatherSettings[mCurrentWeather].mRainLoopSoundID)))
{ {
MWBase::Environment::get().getSoundManager()->stopSound(*it); MWBase::Environment::get().getSoundManager()->stopSound(*it);
it = mSoundsPlaying.erase(it); it = mSoundsPlaying.erase(it);
} }
else
++it; ++it;
} }
} }