in src/backend/mod.rs [2945:2972]
fn drop(&mut self) {
assert!({
let devices = self.devices.lock().unwrap();
devices.input.changed_callback.is_none() && devices.output.changed_callback.is_none()
});
self.shared_voice_processing_unit =
SharedVoiceProcessingUnitManager::new(self.serial_queue.clone());
// Make sure all the pending (device-collection-changed-callback) tasks
// in queue are done, and cancel all the tasks appended after `drop` is executed.
let queue = self.serial_queue.clone();
queue.run_final(|| {});
{
let controller = self.latency_controller.lock().unwrap();
// Disabling this assert in release for bug 1083664 -- we seem to leak a stream
// assert(controller.streams == 0);
debug_assert!(controller.streams == 0);
if controller.streams > 0 {
cubeb_log!(
"({:p}) API misuse, {} streams active when context destroyed!",
self as *const AudioUnitContext,
controller.streams
);
}
}
}