From 7000e8852ec910888d8c04f4f5c747287e215f5e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sun, 28 Apr 2002 13:27:32 +0000 Subject: [PATCH] Added method for releasing request pads. Original commit message from CVS: Added method for releasing request pads. Fix state changes. --- gst/gstelement.c | 18 ++++++++++++++++-- gst/gstelement.h | 2 ++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/gst/gstelement.c b/gst/gstelement.c index acc62b4..f616b44 100644 --- a/gst/gstelement.c +++ b/gst/gstelement.c @@ -205,6 +205,19 @@ gst_element_request_pad (GstElement *element, GstPadTemplate *templ, const gchar return newpad; } +void +gst_element_release_request_pad (GstElement *element, GstPad *pad) +{ + GstElementClass *oclass; + + g_return_if_fail (GST_IS_ELEMENT (element)); + g_return_if_fail (GST_IS_PAD (pad)); + + oclass = CLASS (element); + if (oclass->release_pad) + (oclass->release_pad) (element, pad); +} + /** * gst_element_set_name: @@ -1329,10 +1342,10 @@ gst_element_set_state (GstElement *element, GstElementState state) switch (return_val) { case GST_STATE_FAILURE: GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "have failed change_state return"); - break; + goto exit; case GST_STATE_ASYNC: GST_DEBUG_ELEMENT (GST_CAT_STATES, element, "element will change state async"); - break; + goto exit; case GST_STATE_SUCCESS: /* Last thing we do is verify that a successful state change really * did change the state... */ @@ -1350,6 +1363,7 @@ gst_element_set_state (GstElement *element, GstElementState state) g_assert_not_reached (); } } +exit: return return_val; } diff --git a/gst/gstelement.h b/gst/gstelement.h index 6bd3a17..ae80880 100644 --- a/gst/gstelement.h +++ b/gst/gstelement.h @@ -170,6 +170,7 @@ struct _GstElementClass { GstElementStateReturn (*change_state) (GstElement *element); /* request a new pad */ GstPad* (*request_new_pad) (GstElement *element, GstPadTemplate *templ, const gchar* name); + void (*release_pad) (GstElement *element, GstPad *pad); }; void gst_element_class_add_pad_template (GstElementClass *klass, GstPadTemplate *templ); @@ -203,6 +204,7 @@ void gst_element_remove_ghost_pad (GstElement *element, GstPad *pad); GstPad* gst_element_get_pad (GstElement *element, const gchar *name); GstPad* gst_element_get_static_pad (GstElement *element, const gchar *name); GstPad* gst_element_get_request_pad (GstElement *element, const gchar *name); +void gst_element_release_request_pad (GstElement *element, GstPad *pad); GList* gst_element_get_pad_list (GstElement *element); GstPad* gst_element_get_compatible_pad (GstElement *element, GstPad *pad); -- 2.7.4