From bd3d839f3e9d082963b5e11cd99eaa711e4135fe Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 20 Jul 2022 15:42:25 -0700 Subject: [PATCH] audio: Fix double borrow --- applets/cosmic-applet-audio/src/pa.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/applets/cosmic-applet-audio/src/pa.rs b/applets/cosmic-applet-audio/src/pa.rs index 093ef39e..6ab34c55 100644 --- a/applets/cosmic-applet-audio/src/pa.rs +++ b/applets/cosmic-applet-audio/src/pa.rs @@ -1,4 +1,5 @@ use futures::{channel::oneshot, future::poll_fn, task::Poll}; +use gtk4::glib; use libpulse_binding::{ callbacks::ListResult, context::{ @@ -47,12 +48,17 @@ impl PA { pub fn set_state_callback(&self, cb: F) { let pa = self.clone(); // TODO: weak ref? + let cb = Rc::new(cb); self.0 .context .borrow_mut() .set_state_callback(Some(Box::new(move || { - let state = pa.0.context.borrow().get_state(); - cb(&pa, state); + let pa = pa.clone(); + let cb = cb.clone(); + glib::source::idle_add_local_once(move || { + let state = pa.0.context.borrow().get_state(); + cb(&pa, state); + }); }))); }