--- linuxsampler/trunk/src/drivers/audio/AudioOutputDeviceFactory.h 2006/06/27 22:57:37 880 +++ linuxsampler/trunk/src/drivers/audio/AudioOutputDeviceFactory.h 2007/06/22 10:10:06 1248 @@ -60,14 +60,26 @@ AudioOutputDeviceFactory::InnerFactories[Driver_T::Name()] = new AudioOutputDeviceFactory::InnerFactoryTemplate; AudioOutputDeviceFactory::ParameterFactories[Driver_T::Name()] = new DeviceParameterFactory(); } + ~InnerFactoryRegistrator() { + std::map::iterator iter = AudioOutputDeviceFactory::InnerFactories.find(Driver_T::Name()); + delete iter->second; + AudioOutputDeviceFactory::InnerFactories.erase(iter); + + std::map::iterator iterpf = AudioOutputDeviceFactory::ParameterFactories.find(Driver_T::Name()); + delete iterpf->second; + AudioOutputDeviceFactory::ParameterFactories.erase(iterpf); + } }; template class ParameterRegistrator { public: ParameterRegistrator() { - DeviceParameterFactory::Register(AudioOutputDeviceFactory::ParameterFactories[Driver_T::Name()]); + DeviceParameterFactory::Register(AudioOutputDeviceFactory::ParameterFactories[Driver_T::Name()]); } + ~ParameterRegistrator() { + DeviceParameterFactory::Unregister(AudioOutputDeviceFactory::ParameterFactories[Driver_T::Name()]); + } }; static AudioOutputDevice* Create(String DriverName, std::map Parameters) throw (Exception);