diff --git a/src/Main/main.cxx b/src/Main/main.cxx index 52a488382..2e1df4a68 100644 --- a/src/Main/main.cxx +++ b/src/Main/main.cxx @@ -861,6 +861,11 @@ static const double alt_adjust_m = alt_adjust_ft * SG_FEET_TO_METER; static void fgMainLoop( void ) { // Update the elapsed time. + static bool first_time = true; + if ( first_time ) { + last_time_stamp.stamp(); + first_time = false; + } current_time_stamp.stamp(); delta_time_sec = double(current_time_stamp - last_time_stamp) / 1000000.0; last_time_stamp = current_time_stamp; @@ -1082,8 +1087,17 @@ static void fgMainLoop( void ) { #ifdef ENABLE_AUDIO_SUPPORT if ( fgGetBool("/sim/sound/audible") && globals->get_soundmgr()->is_working() ) { - globals->get_fx()->update(1); // FIXME: use dt - globals->get_soundmgr()->update(1); // FIXME: use dt + static double dt = 0.0; + static double sound_update_rate = 0.05; + + dt += delta_time_sec; + + // Updating four times a second should be enough + if ( dt >= sound_update_rate ) { + globals->get_fx()->update( dt ); + globals->get_soundmgr()->update( dt ); + dt = 0.0; + } } #endif diff --git a/src/Sound/fg_sound.cxx b/src/Sound/fg_sound.cxx index ccd8075e0..28ebafb70 100644 --- a/src/Sound/fg_sound.cxx +++ b/src/Sound/fg_sound.cxx @@ -136,8 +136,6 @@ FGSound::init(SGPropertyNode *node) volume.intern = &_dt_play; else if (!strcmp(intern_str, "dt_stop")) volume.intern = &_dt_stop; - else if (!strcmp(intern_str, "random")) - volume.intern = &_random; if ((volume.factor = kids[i]->getDoubleValue("factor", 1.0)) != 0.0) if (volume.factor < 0.0) { @@ -271,16 +269,16 @@ FGSound::update (double dt) ) { - _active = false; - _dt_stop += dt; - _dt_play = 0.0; - if (_sample->is_playing()) { SG_LOG(SG_GENERAL, SG_INFO, "Stopping audio after " << _dt_play << " sec: " << _name ); _sample->stop( _mgr->get_scheduler() ); } + _active = false; + _dt_stop += dt; + _dt_play = 0.0; + return; } @@ -302,7 +300,7 @@ FGSound::update (double dt) } // - // Update playtime, cache the current value and feed the random number + // Update playing time and cache the current value. // _dt_play += dt; _prev_value = curr_value; diff --git a/src/Sound/fg_sound.hxx b/src/Sound/fg_sound.hxx index fb871d2cb..f6c21b80b 100644 --- a/src/Sound/fg_sound.hxx +++ b/src/Sound/fg_sound.hxx @@ -81,7 +81,6 @@ private: string _name; int _mode; double _prev_value; - double _random; double _dt_play; double _dt_stop;