From 8a4d517decc6e2e7bd85e1e85df7183f7cd2e605 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Wed, 4 Sep 2019 15:17:11 +0200 Subject: [PATCH] jitterbuffer: fix tear down - Release pending future id in READY -> NULL - Verify that we still have an io_context in the timeout's closure --- gst-plugin-threadshare/src/jitterbuffer.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gst-plugin-threadshare/src/jitterbuffer.rs b/gst-plugin-threadshare/src/jitterbuffer.rs index fe98d2ee..598d02ce 100644 --- a/gst-plugin-threadshare/src/jitterbuffer.rs +++ b/gst-plugin-threadshare/src/jitterbuffer.rs @@ -827,6 +827,11 @@ impl JitterBuffer { .and_then(move |_| { let jb = Self::from_instance(&element_clone); let mut state = jb.state.lock().unwrap(); + + if state.io_context.is_none() { + return Ok(()); + } + let now = jb.get_current_running_time(&element_clone); gst_debug!( @@ -1301,6 +1306,12 @@ impl ElementImpl for JitterBuffer { gst::StateChange::ReadyToNull => { let mut state = self.state.lock().unwrap(); + state + .io_context + .as_ref() + .unwrap() + .release_pending_future_id(state.pending_future_id.unwrap()); + state.pending_future_id = None; let _ = state.io_context.take(); } _ => (),