element parent send_event wrapper

This commit is contained in:
Artem Martus
2024-09-13 11:12:19 +03:00
parent 2b260fc8f1
commit e6ee02f884

View File

@@ -29,6 +29,13 @@ GstStateChangeReturn elementParentChangeState (GstElement * element, GstStateCha
return parent->change_state(element, transition); 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" import "C"
@@ -434,6 +441,13 @@ func (e *Element) ParentChangeState(transition StateChange) StateChangeReturn {
return StateChangeReturn(C.elementParentChangeState(e.Instance(), C.GstStateChange(transition))) 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 // ParentPostMessage can be used when extending an element. During a PostMessage, use this method
// to have the message posted on the bus after processing. // to have the message posted on the bus after processing.
func (e *Element) ParentPostMessage(msg *Message) bool { func (e *Element) ParentPostMessage(msg *Message) bool {