diff --git a/gst-plugin/src/element.rs b/gst-plugin/src/element.rs index f294a262..7b764804 100644 --- a/gst-plugin/src/element.rs +++ b/gst-plugin/src/element.rs @@ -102,6 +102,11 @@ pub unsafe trait ElementBase: IsA + ObjectType { .unwrap_or(()) } } + + fn catch_panic T, T>(&self, fallback: T, f: F) -> T { + let panicked = unsafe { &(*self.get_instance()).panicked }; + panic_to_error!(self, panicked, fallback, { f(self) }) + } } pub unsafe trait ElementClassExt