Unref the message in sync bus handlers if Drop is returned

This commit is contained in:
Sebastian Dröge 2018-07-24 15:35:26 +03:00
parent 93b32882ee
commit af5470a8b0

View file

@ -50,7 +50,13 @@ unsafe extern "C" fn trampoline_sync(
) -> ffi::GstBusSyncReply { ) -> ffi::GstBusSyncReply {
#[cfg_attr(feature = "cargo-clippy", allow(transmute_ptr_to_ref))] #[cfg_attr(feature = "cargo-clippy", allow(transmute_ptr_to_ref))]
let f: &&(Fn(&Bus, &Message) -> BusSyncReply + Send + Sync + 'static) = transmute(func); let f: &&(Fn(&Bus, &Message) -> BusSyncReply + Send + Sync + 'static) = transmute(func);
f(&from_glib_borrow(bus), &Message::from_glib_borrow(msg)).to_glib() let res = f(&from_glib_borrow(bus), &Message::from_glib_borrow(msg)).to_glib();
if res == ffi::GST_BUS_DROP {
ffi::gst_mini_object_unref(msg as *mut _);
}
res
} }
unsafe extern "C" fn destroy_closure_sync(ptr: gpointer) { unsafe extern "C" fn destroy_closure_sync(ptr: gpointer) {