guint32 structure_cookie;
- GstContext *context;
-
#if 0
/* cached index */
GstIndex *index;
* a new clock will be selected */
gst_element_set_clock (element, GST_ELEMENT_CLOCK (bin));
- if (bin->priv->context)
- gst_element_set_context (element, bin->priv->context);
+ if (GST_ELEMENT_CAST (bin)->context)
+ gst_element_set_context (element, GST_ELEMENT_CAST (bin)->context);
#if 0
/* set the cached index on the children */
while (gst_iterator_foreach (children, set_context,
context) == GST_ITERATOR_RESYNC);
gst_iterator_free (children);
- GST_OBJECT_LOCK (bin);
- gst_context_replace (&bin->priv->context, context);
- GST_OBJECT_UNLOCK (bin);
}
static gint
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;
}
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 bus of.
+ * @element: a #GstElement to set the context of.
* @context: (transfer none): the #GstContext to set.
*
* Sets the context of the element. Increases the refcount of the context.
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;
+}