1
0
Fork 0

sound: fix sound-buffer-in-use issue

FGFX objects must be dereferenced early enough, and sound manager must be
removed late enough - otherwise openal complains about resources being
still in use when tryin to remove buffers.
Also: do not create FGFX objects for AI/MP aircraft, when AI sound is
disabled.
This commit is contained in:
ThorstenB 2011-12-04 17:18:02 +01:00
parent 9933a7cb4a
commit 07aa70dce9
3 changed files with 9 additions and 2 deletions

View file

@ -228,7 +228,7 @@ void FGAIBase::update(double dt) {
pitch*speed );
_fx->set_velocity( velocity );
}
else if (_aimodel)
else if ((_aimodel)&&(fgGetBool("/sim/sound/aimodels/enabled",false)))
{
string fxpath = _aimodel->get_sound_path();
if (fxpath != "")
@ -492,6 +492,8 @@ void FGAIBase::unbind() {
props->setBoolValue("/sim/controls/radar/", true);
// drop reference to sound effects now
_fx = 0;
}
double FGAIBase::UpdateRadar(FGAIManager* manager) {

View file

@ -171,7 +171,8 @@ FGGlobals::~FGGlobals()
ai->unbind();
delete ai;
}
SGSubsystem* sound = subsystem_mgr->remove("sound");
subsystem_mgr->shutdown();
subsystem_mgr->unbind();
delete subsystem_mgr;
@ -205,6 +206,7 @@ FGGlobals::~FGGlobals()
delete tacanlist;
delete carrierlist;
delete channellist;
delete sound;
}

View file

@ -91,6 +91,9 @@ FGAircraftModel::reinit()
void
FGAircraftModel::deinit()
{
// drop reference
_fx = 0;
if (!_aircraft) {
return;
}