*
* An existing pad of an element can be retrieved by name with
* gst_element_get_static_pad(). A new dynamic pad can be created using
- * gst_element_request_pad() with a #GstPadTemplate or
- * gst_element_get_request_pad() with the template name such as "src_\%u".
+ * gst_element_request_pad() with a #GstPadTemplate.
* An iterator of all pads can be retrieved with gst_element_iterate_pads().
*
* Elements can be linked through their pads.
* #GST_ELEMENT_FLAG_REQUIRE_CLOCK() flag is set, a clock should be set on the
* element with gst_element_set_clock().
*
- * Note that clock slection and distribution is normally handled by the
+ * Note that clock selection and distribution is normally handled by the
* toplevel #GstPipeline so the clock functions are only to be used in very
* specific situations.
- *
- * Last reviewed on 2012-03-28 (0.11.3)
*/
#include "gst_private.h"
#include "gst-i18n-lib.h"
#include "glib-compat-private.h"
+#ifndef GST_DISABLE_GST_DEBUG
+#include "printf/printf.h"
+#endif
+
/* Element signals and args */
enum
{
static void gst_element_set_bus_func (GstElement * element, GstBus * bus);
static gboolean gst_element_post_message_default (GstElement * element,
GstMessage * message);
-static void gst_element_set_context_func (GstElement * element,
- GstContext * context);
static gboolean gst_element_default_send_event (GstElement * element,
GstEvent * event);
klass->send_event = GST_DEBUG_FUNCPTR (gst_element_default_send_event);
klass->numpadtemplates = 0;
klass->post_message = GST_DEBUG_FUNCPTR (gst_element_post_message_default);
- klass->set_context = GST_DEBUG_FUNCPTR (gst_element_set_context_func);
klass->elementfactory = NULL;
}
* @pad: the #GstPad to release.
*
* Makes the element free the previously requested pad as obtained
- * with gst_element_get_request_pad().
+ * with gst_element_request_pad().
*
* This does not unref the pad. If the pad was created by using
- * gst_element_get_request_pad(), gst_element_release_request_pad() needs to be
+ * gst_element_request_pad(), gst_element_release_request_pad() needs to be
* followed by gst_object_unref() to free the @pad.
*
* MT safe.
*
* This function is used by plugin developers and should not be used
* by applications. Pads that were dynamically requested from elements
- * with gst_element_get_request_pad() should be released with the
+ * with gst_element_request_pad() should be released with the
* gst_element_release_request_pad() function instead.
*
* Pads are not automatically deactivated so elements should perform the needed
break;
}
element->pads = g_list_remove (element->pads, pad);
+ GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_NEED_PARENT);
element->numpads--;
element->pads_cookie++;
GST_OBJECT_UNLOCK (element);
* event handler, the event will be pushed on a random linked sink pad for
* upstream events or a random linked source pad for downstream events.
*
- * This function takes owership of the provided event so you should
+ * This function takes ownership of the provided event so you should
* gst_event_ref() it if you want to reuse the event after this call.
*
* MT safe.
*
* Please note that some queries might need a running pipeline to work.
*
- * Returns: TRUE if the query could be performed.
+ * Returns: %TRUE if the query could be performed.
*
* MT safe.
*/
{
va_list args;
gchar *buffer;
+ int len;
if (format == NULL)
return NULL;
return NULL;
va_start (args, format);
- buffer = g_strdup_vprintf (format, args);
+
+ len = __gst_vasprintf (&buffer, format, args);
+
va_end (args);
+
+ if (len < 0)
+ buffer = NULL;
+
return buffer;
}
*
* MT safe.
*
- * Returns: TRUE, if the element's state is locked.
+ * Returns: %TRUE, if the element's state is locked.
*/
gboolean
gst_element_is_locked_state (GstElement * element)
/**
* gst_element_set_locked_state:
* @element: a #GstElement
- * @locked_state: TRUE to lock the element's state
+ * @locked_state: %TRUE to lock the element's state
*
* Locks the state of an element, so state changes of the parent don't affect
* this element anymore.
*
* MT safe.
*
- * Returns: TRUE if the state was changed, FALSE if bad parameters were given
+ * Returns: %TRUE if the state was changed, %FALSE if bad parameters were given
* or the elements state-locking needed no change.
*/
gboolean
* @element: a #GstElement.
*
* Tries to change the state of the element to the same as its parent.
- * If this function returns FALSE, the state of element is undefined.
+ * If this function returns %FALSE, the state of element is undefined.
*
- * Returns: TRUE, if the element's state could be synced to the parent's state.
+ * Returns: %TRUE, if the element's state could be synced to the parent's state.
*
* MT safe.
*/
bus_p = &element->bus;
gst_object_replace ((GstObject **) clock_p, NULL);
gst_object_replace ((GstObject **) bus_p, NULL);
- gst_context_replace (&element->context, NULL);
GST_OBJECT_UNLOCK (element);
GST_CAT_INFO_OBJECT (GST_CAT_REFCOUNTING, element, "parent class dispose");
return result;
}
-static void
-gst_element_set_context_func (GstElement * element, GstContext * context)
-{
- GST_OBJECT_LOCK (element);
- gst_context_replace (&element->context, context);
- GST_OBJECT_UNLOCK (element);
-}
-
/**
* gst_element_set_context:
* @element: a #GstElement to set the context of.
if (oclass->set_context)
oclass->set_context (element, context);
}
-
-/**
- * gst_element_get_context:
- * @element: a #GstElement to get the context from.
- *
- * Gets the current context of the element.
- *
- * MT safe.
- *
- * Returns: (transfer full): The current context of the element
- */
-GstContext *
-gst_element_get_context (GstElement * element)
-{
- GstContext *context = NULL;
-
- g_return_val_if_fail (GST_IS_ELEMENT (element), NULL);
-
- GST_OBJECT_LOCK (element);
- if (element->context)
- context = gst_context_ref (element->context);
- GST_OBJECT_UNLOCK (element);
-
- return context;
-}