diff --git a/gst/gst_element.go b/gst/gst_element.go index 1038f68..61adb2f 100644 --- a/gst/gst_element.go +++ b/gst/gst_element.go @@ -29,6 +29,13 @@ GstStateChangeReturn elementParentChangeState (GstElement * element, GstStateCha return parent->change_state(element, transition); } +gboolean elementParentSendEvent (GstElement * element, GstEvent * event) +{ + GObjectClass * this_class = G_OBJECT_GET_CLASS(G_OBJECT(element)); + GstElementClass * parent = toGstElementClass(g_type_class_peek_parent(this_class)); + return parent->send_event(element, event); +} + */ import "C" @@ -434,6 +441,13 @@ func (e *Element) ParentChangeState(transition StateChange) StateChangeReturn { return StateChangeReturn(C.elementParentChangeState(e.Instance(), C.GstStateChange(transition))) } +// ParentSendEvent chains up to the parent SendEvent handler. +// send_event takes ownership of the incoming event pointer so we have to ref it beforehand +// in order not to mess up go's gc +func (e *Element) ParentSendEvent(event *Event) bool { + return gobool(C.elementParentSendEvent(e.Instance(), event.Ref().Instance())) +} + // ParentPostMessage can be used when extending an element. During a PostMessage, use this method // to have the message posted on the bus after processing. func (e *Element) ParentPostMessage(msg *Message) bool {