From 9fb0c4937bc729c0d894e7ca60fc62c97ce026df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Laignel?= Date: Tue, 17 Nov 2020 16:26:48 +0100 Subject: [PATCH] ProxyPad: impl ExtManual functions as trait functions, not associated functions --- gstreamer/src/lib.rs | 2 ++ gstreamer/src/proxy_pad.rs | 52 ++++++++++++++++++++++++++++---------- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/gstreamer/src/lib.rs b/gstreamer/src/lib.rs index ae35f5b8c..dc2a962a3 100644 --- a/gstreamer/src/lib.rs +++ b/gstreamer/src/lib.rs @@ -209,6 +209,7 @@ mod control_binding; mod control_source; mod parse_context; mod proxy_pad; +pub use proxy_pad::ProxyPadExtManual; mod tag_setter; pub use bin::GstBinExtManual; pub use element::{ElementExtManual, ElementMessageType, NotifyWatchId}; @@ -370,6 +371,7 @@ pub mod prelude { pub use pipeline::GstPipelineExtManual; pub use plugin::GstPluginExtManual; pub use plugin_feature::PluginFeatureExtManual; + pub use proxy_pad::ProxyPadExtManual; pub use tag_setter::TagSetterExtManual; pub use typefind::TypeFindImpl; pub use value::GstValueExt; diff --git a/gstreamer/src/proxy_pad.rs b/gstreamer/src/proxy_pad.rs index 457aa643b..ffce3c00b 100644 --- a/gstreamer/src/proxy_pad.rs +++ b/gstreamer/src/proxy_pad.rs @@ -21,16 +21,42 @@ use glib::translate::{from_glib, from_glib_full, ToGlibPtr}; use gst_sys; -impl ProxyPad { - pub fn chain_default, P: IsA>( - pad: &O, +pub trait ProxyPadExtManual: 'static { + fn chain_default>( + &self, + parent: Option<&P>, + buffer: Buffer, + ) -> Result; + + fn chain_list_default>( + &self, + parent: Option<&P>, + list: BufferList, + ) -> Result; + + fn getrange_default>( + &self, + parent: Option<&P>, + offset: u64, + size: u32, + ) -> Result; + + fn iterate_internal_links_default>( + &self, + parent: Option<&P>, + ) -> Option<::Iterator>; +} + +impl> ProxyPadExtManual for O { + fn chain_default>( + &self, parent: Option<&P>, buffer: Buffer, ) -> Result { skip_assert_initialized!(); let ret: FlowReturn = unsafe { from_glib(gst_sys::gst_proxy_pad_chain_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, buffer.into_ptr(), )) @@ -38,15 +64,15 @@ impl ProxyPad { ret.into_result() } - pub fn chain_list_default, P: IsA>( - pad: &O, + fn chain_list_default>( + &self, parent: Option<&P>, list: BufferList, ) -> Result { skip_assert_initialized!(); let ret: FlowReturn = unsafe { from_glib(gst_sys::gst_proxy_pad_chain_list_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, list.into_ptr(), )) @@ -54,8 +80,8 @@ impl ProxyPad { ret.into_result() } - pub fn getrange_default, P: IsA>( - pad: &O, + fn getrange_default>( + &self, parent: Option<&P>, offset: u64, size: u32, @@ -64,7 +90,7 @@ impl ProxyPad { unsafe { let mut buffer = ptr::null_mut(); let ret: FlowReturn = from_glib(gst_sys::gst_proxy_pad_getrange_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, offset, size, @@ -74,14 +100,14 @@ impl ProxyPad { } } - pub fn iterate_internal_links_default, P: IsA>( - pad: &O, + fn iterate_internal_links_default>( + &self, parent: Option<&P>, ) -> Option<::Iterator> { skip_assert_initialized!(); unsafe { from_glib_full(gst_sys::gst_proxy_pad_iterate_internal_links_default( - pad.as_ptr() as *mut gst_sys::GstPad, + self.as_ptr() as *mut gst_sys::GstPad, parent.map(|p| p.as_ref()).to_glib_none().0, )) }