diff --git a/examples/src/bin/tokio.rs b/examples/src/bin/tokio.rs index a130c6da7..b10f637e7 100644 --- a/examples/src/bin/tokio.rs +++ b/examples/src/bin/tokio.rs @@ -32,6 +32,12 @@ impl BusStream { } } +impl Drop for BusStream { + fn drop(&mut self) { + self.0.unset_sync_handler(); + } +} + impl Stream for BusStream { type Item = Message; type Error = (); diff --git a/gstreamer/src/bus.rs b/gstreamer/src/bus.rs index a0d66332b..14c290548 100644 --- a/gstreamer/src/bus.rs +++ b/gstreamer/src/bus.rs @@ -14,6 +14,7 @@ use glib::translate::*; use glib::source::{CallbackGuard, Continue, Priority, SourceId}; use glib_ffi; use glib_ffi::{gboolean, gpointer}; +use std::ptr; use Bus; use BusSyncReply; @@ -119,4 +120,15 @@ impl Bus { ) } } + + pub fn unset_sync_handler(&self) { + unsafe { + ffi::gst_bus_set_sync_handler( + self.to_glib_none().0, + None, + ptr::null_mut(), + None, + ) + } + } }