mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-02-16 19:15:30 +00:00
gstreamer: add parent_xxx impl for all vfunc
This commit is contained in:
parent
ac00608b7e
commit
fcb46ee5bf
1 changed files with 45 additions and 6 deletions
|
@ -39,15 +39,17 @@ pub trait ElementImpl: ObjectImpl + Send + Sync + 'static {
|
||||||
|
|
||||||
fn request_new_pad(
|
fn request_new_pad(
|
||||||
&self,
|
&self,
|
||||||
_element: &::Element,
|
element: &::Element,
|
||||||
_templ: &::PadTemplate,
|
templ: &::PadTemplate,
|
||||||
_name: Option<String>,
|
name: Option<String>,
|
||||||
_caps: Option<&::CapsRef>,
|
caps: Option<&::CapsRef>,
|
||||||
) -> Option<::Pad> {
|
) -> Option<::Pad> {
|
||||||
None
|
self.parent_request_new_pad(element, templ, name, caps)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn release_pad(&self, _element: &::Element, _pad: &::Pad) {}
|
fn release_pad(&self, element: &::Element, pad: &::Pad) {
|
||||||
|
self.parent_release_pad(element, pad)
|
||||||
|
}
|
||||||
|
|
||||||
fn send_event(&self, element: &::Element, event: Event) -> bool {
|
fn send_event(&self, element: &::Element, event: Event) -> bool {
|
||||||
self.parent_send_event(element, event)
|
self.parent_send_event(element, event)
|
||||||
|
@ -78,6 +80,43 @@ pub trait ElementImpl: ObjectImpl + Send + Sync + 'static {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn parent_request_new_pad(
|
||||||
|
&self,
|
||||||
|
element: &::Element,
|
||||||
|
templ: &::PadTemplate,
|
||||||
|
name: Option<String>,
|
||||||
|
caps: Option<&::CapsRef>,
|
||||||
|
) -> Option<::Pad> {
|
||||||
|
unsafe {
|
||||||
|
let data = self.get_type_data();
|
||||||
|
let parent_class = data.as_ref().get_parent_class() as *mut ffi::GstElementClass;
|
||||||
|
|
||||||
|
(*parent_class)
|
||||||
|
.request_new_pad
|
||||||
|
.map(|f| {
|
||||||
|
from_glib_none(f(
|
||||||
|
element.to_glib_none().0,
|
||||||
|
templ.to_glib_none().0,
|
||||||
|
name.to_glib_full(),
|
||||||
|
caps.map(|caps| caps.as_ptr()).unwrap_or(std::ptr::null()),
|
||||||
|
))
|
||||||
|
})
|
||||||
|
.unwrap_or(None)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parent_release_pad(&self, element: &::Element, pad: &::Pad) {
|
||||||
|
unsafe {
|
||||||
|
let data = self.get_type_data();
|
||||||
|
let parent_class = data.as_ref().get_parent_class() as *mut ffi::GstElementClass;
|
||||||
|
|
||||||
|
(*parent_class)
|
||||||
|
.release_pad
|
||||||
|
.map(|f| f(element.to_glib_none().0, pad.to_glib_none().0))
|
||||||
|
.unwrap_or(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn parent_send_event(&self, element: &::Element, event: Event) -> bool {
|
fn parent_send_event(&self, element: &::Element, event: Event) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
let data = self.get_type_data();
|
let data = self.get_type_data();
|
||||||
|
|
Loading…
Reference in a new issue