public void Dispose ()
{
Scheduler.Unschedule (typeof(MapDeviceJob));
lock (sync) {
if (!initialized)
return;
AddinManager.RemoveExtensionNodeHandler ("/Banshee/Dap/DeviceClass", OnExtensionChanged);
ServiceManager.HardwareManager.DeviceAdded -= OnHardwareDeviceAdded;
ServiceManager.HardwareManager.DeviceRemoved -= OnHardwareDeviceRemoved;
ServiceManager.HardwareManager.DeviceCommand -= OnDeviceCommand;
ServiceManager.SourceManager.SourceRemoved -= OnSourceRemoved;
List<DapSource> dap_sources = new List<DapSource> (sources.Values);
foreach (DapSource source in dap_sources) {
UnmapDevice (source.Device.Uuid);
}
sources.Clear ();
sources = null;
supported_dap_types.Clear ();
supported_dap_types = null;
initialized = false;
}
}