]> git.mxchange.org Git - flightgear.git/commitdiff
New Property layout:
authorehofman <ehofman>
Sun, 29 Nov 2009 10:24:47 +0000 (10:24 +0000)
committerTim Moore <timoore@redhat.com>
Sun, 29 Nov 2009 14:57:37 +0000 (15:57 +0100)
/sim/sound/enabled enable/disable the use of OpenAL
/sin/sound/pause master mute, effects all SampleGroups
/sim/sound/volume master volume
/sim/sound/effects/enabled enable/disable (mute) sound fx
/sim/sound/effects/volume effects volume
/sim/sound/chatter/enabled enable/disable (mute) atc chatter
/sim/sound/chatter/volume chatter (sample queue) volume

src/Main/main.cxx
src/Sound/fg_fx.cxx
src/Sound/fg_fx.hxx
src/Sound/sample_queue.cxx
src/Sound/sample_queue.hxx

index 66bf3c6d848badb4553ccf5c8036143df4a5a789..896a38bfed983cc530f406758cea8b59a72d2a77 100644 (file)
@@ -480,7 +480,23 @@ static void fgMainLoop( void ) {
     // Update the sound manager last so it can use the CPU while the GPU
     // is processing the scenery (doubled the frame-rate for me) -EMH-
 #ifdef ENABLE_AUDIO_SUPPORT
-    globals->get_soundmgr()->update(delta_time_sec);
+    static SGPropertyNode *sound_pause = fgGetNode("/sim/sound/pause");
+    static SGSoundMgr *smgr = globals->get_soundmgr();
+    static bool smgr_suspend = false;
+    if (smgr_suspend != sound_pause->getBoolValue()) {
+        if (smgr_suspend == false) { // request to suspend
+            smgr->suspend();
+        } else {
+            smgr->resume();
+        }
+        smgr_suspend = sound_pause->getBoolValue();
+    }
+
+    if (smgr_suspend == false) {
+        static SGPropertyNode *volume = fgGetNode("/sim/sound/volume");
+        smgr->set_volume(volume->getFloatValue());
+        smgr->update(delta_time_sec);
+    }
 #endif
 
     // END Tile Manager udpates
@@ -488,15 +504,11 @@ static void fgMainLoop( void ) {
     if (!scenery_loaded && globals->get_tile_mgr()->isSceneryLoaded()
         && cur_fdm_state->get_inited()) {
         fgSetBool("sim/sceneryloaded",true);
-#ifdef ENABLE_AUDIO_SUPPORT
-        if (fgGetBool("/sim/sound/enabled") == true)  {
-            float volume = fgGetFloat("/sim/sound/volume");
-            globals->get_soundmgr()->set_volume(volume);
-            globals->get_soundmgr()->activate();
+        if (fgGetBool("/sim/sound/enabled")) {
+            smgr->activate();
+        } else {
+            smgr->stop();
         }
-        else
-            globals->get_soundmgr()->stop();
-#endif
     }
 
     fgRequestRedraw();
index d2addc66deaeed7b10bae1b2b725819b82218e94..831375454bf1d39ced649ae201995ddb0219d3cc 100644 (file)
 #include <simgear/sound/xmlsound.hxx>
 
 FGFX::FGFX ( SGSoundMgr *smgr, const string &refname ) :
-    last_pause( false ),
+    last_enabled( true ),
     last_volume( 0.0 ),
-    _pause( fgGetNode("/sim/sound/pause") ),
-    _volume( fgGetNode("/sim/sound/volume") )
+    _enabled( fgGetNode("/sim/sound/effects/enabled", true) ),
+    _volume( fgGetNode("/sim/sound/effects/volume", true) )
 {
     SGSampleGroup::_smgr = smgr;
     SGSampleGroup::_refname = refname;
     SGSampleGroup::_smgr->add(this, refname);
     _avionics = _smgr->find("avionics", true);
     _avionics->tie_to_listener();
+    _enabled->setBoolValue(true);
+    _volume->setFloatValue(1.0);
 }
 
 
@@ -116,17 +118,17 @@ FGFX::reinit()
 void
 FGFX::update (double dt)
 {
-    bool new_pause = _pause->getBoolValue();
-    if ( new_pause != last_pause ) {
-        if ( new_pause ) {
-            suspend();
-        } else {
+    bool new_enabled = _enabled->getBoolValue();
+    if ( new_enabled != last_enabled ) {
+        if ( new_enabled ) {
             resume();
+        } else {
+            suspend();
         }
-        last_pause = new_pause;
+        last_enabled = new_enabled;
     }
 
-    if ( !new_pause ) {
+    if ( new_enabled ) {
         double volume = _volume->getDoubleValue();
         if ( volume != last_volume ) {
             set_volume( volume );        
index 8a004465ce196bea6d06d9bc48ebc654638363ff..f28d3677beeb9bded9cf75c587dcaabc8bcf4a63 100644 (file)
@@ -60,10 +60,10 @@ private:
     SGSharedPtr<SGSampleGroup> _avionics;
     std::vector<SGXmlSound *> _sound;
 
-    bool last_pause;
+    bool last_enabled;
     double last_volume;
 
-    SGPropertyNode_ptr _pause;
+    SGPropertyNode_ptr _enabled;
     SGPropertyNode_ptr _volume;
 };
 
index 863cbcbdc602600943f952206810477e0ca195c3..e5c2293a6037fe3b8ffa3f2d346d6b59fa89b32b 100644 (file)
 #include <simgear/sound/sample_openal.hxx>
 
 FGSampleQueue::FGSampleQueue ( SGSoundMgr *smgr, const string &refname ) :
-    last_pause( false ),
+    last_enabled( true ),
     last_volume( 0.0 ),
-    _pause( fgGetNode("/sim/sound/pause") ),
-    _volume( fgGetNode("/sim/sound/volume") )
+    _enabled( fgGetNode("/sim/sound/chatter/enabled", true) ),
+    _volume( fgGetNode("/sim/sound/chatter/volume", true) )
 {
     SGSampleGroup::_smgr = smgr;
     SGSampleGroup::_smgr->add(this, refname);
     SGSampleGroup::_refname = refname;
+    _enabled->setBoolValue(true);
+    _volume->setFloatValue(1.0);
 }
 
 
@@ -61,17 +63,17 @@ void
 FGSampleQueue::update (double dt)
 {
     // command sound manger
-    bool new_pause = _pause->getBoolValue();
-    if ( new_pause != last_pause ) {
-        if ( new_pause ) {
-            suspend();
-        } else {
+    bool new_enabled = _enabled->getBoolValue();
+    if ( new_enabled != last_enabled ) {
+        if ( new_enabled ) {
             resume();
+        } else {
+            suspend();
         }
-        last_pause = new_pause;
+        last_enabled = new_enabled;
     }
 
-    if ( !new_pause ) {
+    if ( new_enabled ) {
         double volume = _volume->getDoubleValue();
         if ( volume != last_volume ) {
             set_volume( volume );
index 88b30ae757f8641dea0ced9fda68bd5231a5bec5..db3d9c785fa5ae60781350a6482c4117920afb5b 100644 (file)
@@ -57,10 +57,10 @@ private:
 
     std::queue< SGSharedPtr<SGSoundSample> > _messages;
 
-    bool last_pause;
+    bool last_enabled;
     double last_volume;
 
-    SGPropertyNode_ptr _pause;
+    SGPropertyNode_ptr _enabled;
     SGPropertyNode_ptr _volume;
 };