// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
#include <simgear/sound/soundmgr_openal.hxx>
#include "soundmanager.hxx"
_enabled(false),
_listener(new Listener(this))
{
- SGPropertyNode_ptr scenery_loaded = fgGetNode("sim/sceneryloaded", true);
- scenery_loaded->addChangeListener(_listener);
}
FGSoundManager::~FGSoundManager()
_viewYoffset = _currentView->getNode("y-offset-m", true);
_viewZoffset = _currentView->getNode("z-offset-m", true);
+ SGPropertyNode_ptr scenery_loaded = fgGetNode("sim/sceneryloaded", true);
+ scenery_loaded->addChangeListener(_listener.get());
+
reinit();
}
+void FGSoundManager::shutdown()
+{
+ SGPropertyNode_ptr scenery_loaded = fgGetNode("sim/sceneryloaded", true);
+ scenery_loaded->removeChangeListener(_listener.get());
+
+ SGSoundMgr::shutdown();
+}
+
void FGSoundManager::reinit()
{
_is_initialized = false;
#ifndef __FG_SOUNDMGR_HXX
#define __FG_SOUNDMGR_HXX 1
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
+#include <memory>
#include <simgear/props/props.hxx>
#include <simgear/structure/subsystem_mgr.hxx>
#include <simgear/sound/soundmgr_openal.hxx>
{
public:
FGSoundManager();
- ~FGSoundManager();
+ virtual ~FGSoundManager();
void init(void);
+ virtual void shutdown();
void update(double dt);
void reinit(void);
SGPropertyNode_ptr _viewPosLon, _viewPosLat, _viewPosElev;
SGPropertyNode_ptr _velocityNorthFPS, _velocityEastFPS, _velocityDownFPS;
SGPropertyNode_ptr _viewXoffset, _viewYoffset, _viewZoffset;
- Listener* _listener;
+ std::auto_ptr<Listener> _listener;
};
#else
#include "Main/fg_props.hxx"