From a2e22416fe1a2c9bedc9b4ad5ad248b2312dbe2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 16 Nov 2021 13:08:23 +0200 Subject: [PATCH] gstreamer: Don't try removing locked metas from buffers And return success from the `remove()` function. --- gstreamer/src/meta.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gstreamer/src/meta.rs b/gstreamer/src/meta.rs index db63c2efe..9f85a5641 100644 --- a/gstreamer/src/meta.rs +++ b/gstreamer/src/meta.rs @@ -257,13 +257,19 @@ impl<'a, T, U> MetaRefMut<'a, T, U> { impl<'a, T> MetaRefMut<'a, T, Standalone> { #[doc(alias = "gst_buffer_remove_meta")] - pub fn remove(self) { + pub fn remove(self) -> Result<(), glib::BoolError> { + if self.flags().contains(crate::MetaFlags::LOCKED) { + return Err(glib::bool_error!("Can't remove locked meta")); + } + unsafe { let res = ffi::gst_buffer_remove_meta( self.buffer.as_mut_ptr(), self.meta as *mut T as *mut ffi::GstMeta, ); assert_ne!(res, glib::ffi::GFALSE); + + Ok(()) } } } @@ -733,7 +739,7 @@ mod tests { unsafe { assert_eq!(meta.parent().as_ptr(), parent.as_ptr()); } - meta.remove(); + meta.remove().unwrap(); } {