Allow dropping old muters.
This commit is contained in:
@@ -31,8 +31,8 @@ impl SMSessionNotifier {
|
||||
) -> Arc<Mutex<Option<SMSessionNotifier>>> {
|
||||
let session_notifier_arc: Arc<Mutex<Option<SMSessionNotifier>>> =
|
||||
Arc::new(Mutex::new(None));
|
||||
let sn2 = session_notifier_arc.clone();
|
||||
let sn3 = session_notifier_arc.clone();
|
||||
let sn2 = Arc::downgrade(&session_notifier_arc);
|
||||
let sn3 = sn2.clone();
|
||||
let notifier = SMSessionNotifier {
|
||||
session_managers: Vec::new(),
|
||||
device_enumerator: unsafe {
|
||||
@@ -40,7 +40,7 @@ impl SMSessionNotifier {
|
||||
},
|
||||
device_notification_client: IMMNotificationClient::from(DeviceNotificationClient {
|
||||
callback: Box::new(move |id| {
|
||||
match sn2.lock().unwrap().as_mut().unwrap().add_device_by_id(id) {
|
||||
match sn2.upgrade().unwrap().lock().unwrap().as_mut().unwrap().add_device_by_id(id) {
|
||||
Ok(_) => {},
|
||||
Err(e) => {
|
||||
println!("Failed to add new device: {:?}", e);
|
||||
@@ -50,13 +50,13 @@ impl SMSessionNotifier {
|
||||
}),
|
||||
session_notification: IAudioSessionNotification::from(SessionNotification {
|
||||
callback: Box::new(move |session| {
|
||||
(sn3.lock().unwrap().as_mut().unwrap().notification_function)(session)
|
||||
(sn3.upgrade().unwrap().lock().unwrap().as_mut().unwrap().notification_function)(session)
|
||||
}),
|
||||
}),
|
||||
notification_function: callback,
|
||||
};
|
||||
*session_notifier_arc.lock().unwrap() = Some(notifier);
|
||||
return session_notifier_arc.clone();
|
||||
return session_notifier_arc;
|
||||
}
|
||||
|
||||
pub(crate) fn boot_devices(self: &mut SMSessionNotifier) -> Result<(), Box<dyn Error>> {
|
||||
|
||||
Reference in New Issue
Block a user