GType _gst_bin_type = 0;
-static void gst_bin_dispose (GObject *object);
+static void gst_bin_dispose (GObject * object);
-static GstElementStateReturn gst_bin_change_state (GstElement *element);
-static GstElementStateReturn gst_bin_change_state_norecurse (GstBin *bin);
-static gboolean gst_bin_change_state_type (GstBin *bin,
- GstElementState state,
- GType type);
-static void gst_bin_child_state_change (GstBin *bin, GstElementState old,
- GstElementState new, GstElement *child);
+static GstElementStateReturn gst_bin_change_state (GstElement * element);
+static GstElementStateReturn gst_bin_change_state_norecurse (GstBin * bin);
+static gboolean gst_bin_change_state_type (GstBin * bin, GstElementState state, GType type);
+static void gst_bin_child_state_change (GstBin * bin, GstElementState old,
+ GstElementState new, GstElement * element);
-static gboolean gst_bin_iterate_func (GstBin *bin);
+static gboolean gst_bin_iterate_func (GstBin * bin);
#ifndef GST_DISABLE_LOADSAVE
-static xmlNodePtr gst_bin_save_thyself (GstObject *object, xmlNodePtr parent);
-static void gst_bin_restore_thyself (GstObject *object, xmlNodePtr self);
+static xmlNodePtr gst_bin_save_thyself (GstObject * object, xmlNodePtr parent);
+static void gst_bin_restore_thyself (GstObject * object, xmlNodePtr self);
#endif
/* Bin signals and args */
-enum {
+enum
+{
OBJECT_ADDED,
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
/* FILL ME */
};
-
-static void gst_bin_class_init (GstBinClass *klass);
-static void gst_bin_init (GstBin *bin);
-
+static void gst_bin_class_init (GstBinClass * klass);
+static void gst_bin_init (GstBin * bin);
static GstElementClass *parent_class = NULL;
static guint gst_bin_signals[LAST_SIGNAL] = { 0 };
{
if (!_gst_bin_type) {
static const GTypeInfo bin_info = {
- sizeof(GstBinClass),
+ sizeof (GstBinClass),
NULL,
NULL,
- (GClassInitFunc)gst_bin_class_init,
+ (GClassInitFunc) gst_bin_class_init,
NULL,
NULL,
- sizeof(GstBin),
+ sizeof (GstBin),
8,
- (GInstanceInitFunc)gst_bin_init,
+ (GInstanceInitFunc) gst_bin_init,
NULL
};
+
_gst_bin_type = g_type_register_static (GST_TYPE_ELEMENT, "GstBin", &bin_info, 0);
}
return _gst_bin_type;
}
static void
-gst_bin_class_init (GstBinClass *klass)
+gst_bin_class_init (GstBinClass * klass)
{
GObjectClass *gobject_class;
GstObjectClass *gstobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstobject_class = (GstObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstobject_class = (GstObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gst_bin_signals[OBJECT_ADDED] =
- g_signal_new ("object_added", G_TYPE_FROM_CLASS(klass), G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (GstBinClass, object_added), NULL, NULL,
- gst_marshal_VOID__OBJECT, G_TYPE_NONE, 1,
- GST_TYPE_ELEMENT);
-
- klass->change_state_type = GST_DEBUG_FUNCPTR (gst_bin_change_state_type);
- klass->iterate = GST_DEBUG_FUNCPTR (gst_bin_iterate_func);
+ g_signal_new ("object_added", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (GstBinClass, object_added), NULL, NULL,
+ gst_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_ELEMENT);
+ gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_bin_dispose);
#ifndef GST_DISABLE_LOADSAVE
- gstobject_class->save_thyself = GST_DEBUG_FUNCPTR (gst_bin_save_thyself);
- gstobject_class->restore_thyself = GST_DEBUG_FUNCPTR (gst_bin_restore_thyself);
+ gstobject_class->save_thyself = GST_DEBUG_FUNCPTR (gst_bin_save_thyself);
+ gstobject_class->restore_thyself = GST_DEBUG_FUNCPTR (gst_bin_restore_thyself);
#endif
- gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_bin_change_state);
+ gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_bin_change_state);
- gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_bin_dispose);
+ klass->change_state_type = GST_DEBUG_FUNCPTR (gst_bin_change_state_type);
+ klass->iterate = GST_DEBUG_FUNCPTR (gst_bin_iterate_func);
}
static void
-gst_bin_init (GstBin *bin)
+gst_bin_init (GstBin * bin)
{
/* in general, we prefer to use cothreads for most things */
GST_FLAG_SET (bin, GST_BIN_FLAG_PREFER_COTHREADS);
*
* Returns: new bin
*/
-GstElement*
-gst_bin_new (const gchar *name)
+GstElement *
+gst_bin_new (const gchar * name)
{
return gst_elementfactory_make ("bin", name);
}
static inline void
-gst_bin_reset_element_sched (GstElement *element, GstScheduler *sched)
+gst_bin_reset_element_sched (GstElement * element, GstScheduler * sched)
{
GST_INFO_ELEMENT (GST_CAT_PARENTAGE, element, "resetting element's scheduler");
- gst_element_set_sched (element,sched);
+ gst_element_set_sched (element, sched);
}
static void
-gst_bin_set_element_sched (GstElement *element,GstScheduler *sched)
+gst_bin_set_element_sched (GstElement * element, GstScheduler * sched)
{
GList *children;
GstElement *child;
g_return_if_fail (element != NULL);
- g_return_if_fail (GST_IS_ELEMENT(element));
+ g_return_if_fail (GST_IS_ELEMENT (element));
g_return_if_fail (sched != NULL);
- g_return_if_fail (GST_IS_SCHEDULER(sched));
+ g_return_if_fail (GST_IS_SCHEDULER (sched));
- GST_INFO (GST_CAT_SCHEDULING, "setting element \"%s\" sched to %p",GST_ELEMENT_NAME(element),
- sched);
+ GST_INFO (GST_CAT_SCHEDULING, "setting element \"%s\" sched to %p", GST_ELEMENT_NAME (element),
+ sched);
/* if it's actually a Bin */
- if (GST_IS_BIN(element)) {
+ if (GST_IS_BIN (element)) {
if (GST_FLAG_IS_SET (element, GST_BIN_FLAG_MANAGER)) {
GST_INFO_ELEMENT (GST_CAT_PARENTAGE, element, "child is already a manager, not resetting");
return;
gst_scheduler_add_element (sched, element);
/* set the children's schedule */
- children = GST_BIN(element)->children;
+ children = GST_BIN (element)->children;
while (children) {
child = GST_ELEMENT (children->data);
- children = g_list_next(children);
+ children = g_list_next (children);
gst_bin_set_element_sched (child, sched);
}
+ }
/* otherwise, if it's just a regular old element */
- } else {
+ else {
gst_scheduler_add_element (sched, element);
}
}
static void
-gst_bin_unset_element_sched (GstElement *element)
+gst_bin_unset_element_sched (GstElement * element)
{
GList *children;
GstElement *child;
g_return_if_fail (element != NULL);
- g_return_if_fail (GST_IS_ELEMENT(element));
+ g_return_if_fail (GST_IS_ELEMENT (element));
GST_INFO (GST_CAT_SCHEDULING, "removing element \"%s\" from it sched %p",
- GST_ELEMENT_NAME(element),GST_ELEMENT_SCHED(element));
+ GST_ELEMENT_NAME (element), GST_ELEMENT_SCHED (element));
/* if it's actually a Bin */
- if (GST_IS_BIN(element)) {
+ if (GST_IS_BIN (element)) {
- if (GST_FLAG_IS_SET(element,GST_BIN_FLAG_MANAGER)) {
- GST_INFO_ELEMENT (GST_CAT_PARENTAGE, element, "child is already a manager, not unsetting sched");
+ if (GST_FLAG_IS_SET (element, GST_BIN_FLAG_MANAGER)) {
+ GST_INFO_ELEMENT (GST_CAT_PARENTAGE, element,
+ "child is already a manager, not unsetting sched");
return;
}
- /* FIXME this check should be irrelevant */
- if (GST_ELEMENT_SCHED (element))
- gst_scheduler_remove_element (GST_ELEMENT_SCHED(element), element);
+ gst_scheduler_remove_element (GST_ELEMENT_SCHED (element), element);
/* for each child, remove them from their schedule */
- children = GST_BIN(element)->children;
+ children = GST_BIN (element)->children;
while (children) {
child = GST_ELEMENT (children->data);
- children = g_list_next(children);
+ children = g_list_next (children);
gst_bin_unset_element_sched (child);
}
+ }
/* otherwise, if it's just a regular old element */
- } else {
- /* FIXME this check should be irrelevant */
- if (GST_ELEMENT_SCHED (element))
- gst_scheduler_remove_element (GST_ELEMENT_SCHED(element), element);
+ else {
+ gst_scheduler_remove_element (GST_ELEMENT_SCHED (element), element);
}
}
* add a reference.
*/
void
-gst_bin_add (GstBin *bin,
- GstElement *element)
+gst_bin_add (GstBin * bin, GstElement * element)
{
gint state_idx = 0;
GstElementState state;
g_return_if_fail (GST_IS_ELEMENT (element));
GST_DEBUG (GST_CAT_PARENTAGE, "adding element \"%s\" to bin \"%s\"\n",
- GST_ELEMENT_NAME (element), GST_ELEMENT_NAME (bin));
+ GST_ELEMENT_NAME (element), GST_ELEMENT_NAME (bin));
/* must be not be in PLAYING state in order to modify bin */
g_return_if_fail (GST_STATE (bin) != GST_STATE_PLAYING);
g_return_if_fail (GST_ELEMENT_PARENT (element) == NULL);
/* then check to see if the element's name is already taken in the bin */
- g_return_if_fail (gst_object_check_uniqueness (bin->children, GST_ELEMENT_NAME (element)) == TRUE);
+ g_return_if_fail (gst_object_check_uniqueness (bin->children, GST_ELEMENT_NAME (element)) ==
+ TRUE);
/* set the element's parent and add the element to the bin's list of children */
gst_object_set_parent (GST_OBJECT (element), GST_OBJECT (bin));
- g_signal_connect_swapped (G_OBJECT (element), "state_change", gst_bin_child_state_change, G_OBJECT (bin));
+ g_signal_connect_swapped (G_OBJECT (element), "state_change",
+ G_CALLBACK (gst_bin_child_state_change), G_OBJECT (bin));
bin->children = g_list_append (bin->children, element);
bin->numchildren++;
/* bump our internal state counter */
state = GST_STATE (element);
- while (state>>=1) state_idx++;
+ while (state >>= 1) state_idx++;
bin->child_states[state_idx]++;
- /* now we have to deal with manager stuff */
- /* we can only do this if there's a scheduler: */
- /* if we're not a manager, and aren't attached to anything, we have no sched (yet) */
- if (GST_IS_BIN(element) && GST_FLAG_IS_SET (element, GST_BIN_FLAG_MANAGER)) {
+ /* now we have to deal with manager stuff
+ * we can only do this if there's a scheduler:
+ * if we're not a manager, and aren't attached to anything, we have no sched (yet) */
+ if (GST_IS_BIN (element) && GST_FLAG_IS_SET (element, GST_BIN_FLAG_MANAGER)) {
GST_INFO_ELEMENT (GST_CAT_PARENTAGE, element, "child is a manager");
}
else if (GST_ELEMENT_SCHED (bin) != NULL) {
* Remove the element from its associated bin, unparenting as well.
*/
void
-gst_bin_remove (GstBin *bin,
- GstElement *element)
+gst_bin_remove (GstBin * bin, GstElement * element)
{
gint state_idx = 0;
GstElementState state;
+ gint sig;
g_return_if_fail (bin != NULL);
g_return_if_fail (GST_IS_BIN (bin));
g_return_if_fail (GST_STATE (bin) != GST_STATE_PLAYING);
/* the element must have its parent set to the current bin */
- g_return_if_fail (GST_ELEMENT_PARENT(element) == (GstObject *)bin);
+ g_return_if_fail (GST_ELEMENT_PARENT (element) == (GstObject *) bin);
/* the element must be in the bin's list of children */
- if (g_list_find(bin->children, element) == NULL) {
- /* FIXME this should be a warning!!! */
- GST_ERROR_OBJECT(bin,element,"no such element in bin");
+ if (g_list_find (bin->children, element) == NULL) {
+ g_warning ("no element \"%s\" in bin \"%s\"\n", GST_ELEMENT_NAME (element),
+ GST_ELEMENT_NAME (bin));
return;
}
+ sig = g_signal_handlers_disconnect_matched (G_OBJECT (element),
+ G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA, 0, 0, NULL,
+ gst_bin_child_state_change, bin);
/* remove this element from the list of managed elements */
gst_bin_unset_element_sched (element);
/* bump our internal state counter */
state = GST_STATE (element);
- while (state>>=1) state_idx++;
+ while (state >>= 1) state_idx++;
bin->child_states[state_idx]--;
GST_INFO_ELEMENT (GST_CAT_PARENTAGE, bin, "removed child %s", GST_ELEMENT_NAME (element));
}
static void
-gst_bin_child_state_change (GstBin *bin, GstElementState old, GstElementState new, GstElement *child)
+gst_bin_child_state_change (GstBin * bin, GstElementState old, GstElementState new,
+ GstElement * child)
{
gint old_idx = 0, new_idx = 0, i;
- GST_INFO (GST_CAT_STATES, "child %s changed state in bin %s from %s to %s",
- GST_ELEMENT_NAME (child), GST_ELEMENT_NAME (bin),
- gst_element_statename (old), gst_element_statename (new));
+ GST_INFO (GST_CAT_STATES, "child %s changed state in bin %s from %s to %s",
+ GST_ELEMENT_NAME (child), GST_ELEMENT_NAME (bin),
+ gst_element_statename (old), gst_element_statename (new));
- while (old>>=1) old_idx++;
- while (new>>=1) new_idx++;
+ while (old >>= 1) old_idx++;
+ while (new >>= 1) new_idx++;
GST_LOCK (bin);
bin->child_states[old_idx]--;
bin->child_states[new_idx]++;
- for (i = GST_NUM_STATES-1; i >= 0; i--) {
+ for (i = GST_NUM_STATES - 1; i >= 0; i--) {
if (bin->child_states[i] != 0) {
if (GST_STATE (bin) != (1 << i)) {
- GST_INFO (GST_CAT_STATES, "bin %s need state change to %s",
- GST_ELEMENT_NAME (bin), gst_element_statename (1<<i));
- GST_STATE_PENDING (bin) = (1<<i);
+ GST_INFO (GST_CAT_STATES, "bin %s need state change to %s",
+ GST_ELEMENT_NAME (bin), gst_element_statename (1 << i));
+ GST_STATE_PENDING (bin) = (1 << i);
gst_bin_change_state_norecurse (bin);
}
break;
}
}
-
+
GST_UNLOCK (bin);
}
static GstElementStateReturn
-gst_bin_change_state (GstElement *element)
+gst_bin_change_state (GstElement * element)
{
GstBin *bin;
GList *children;
pending = GST_STATE_PENDING (element);
GST_INFO_ELEMENT (GST_CAT_STATES, element, "changing childrens' state from %s to %s",
- gst_element_statename (old_state),
- gst_element_statename (pending));
+ gst_element_statename (old_state), gst_element_statename (pending));
children = bin->children;
while (children) {
switch (gst_element_set_state (child, pending)) {
case GST_STATE_FAILURE:
- GST_STATE_PENDING (element) = GST_STATE_VOID_PENDING;
- GST_DEBUG (GST_CAT_STATES,"child '%s' failed to go to state %d(%s)\n", GST_ELEMENT_NAME (child),
- pending, gst_element_statename (pending));
+ GST_STATE_PENDING (element) = GST_STATE_VOID_PENDING;
+ GST_DEBUG (GST_CAT_STATES, "child '%s' failed to go to state %d(%s)\n",
+ GST_ELEMENT_NAME (child), pending, gst_element_statename (pending));
gst_element_set_state (child, old_state);
if (GST_ELEMENT_SCHED (child) == GST_ELEMENT_SCHED (element)) {
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
- break;
+ break;
case GST_STATE_ASYNC:
- GST_DEBUG (GST_CAT_STATES,"child '%s' is changing state asynchronously\n", GST_ELEMENT_NAME (child));
+ GST_DEBUG (GST_CAT_STATES, "child '%s' is changing state asynchronously\n",
+ GST_ELEMENT_NAME (child));
have_async = TRUE;
- break;
+ break;
}
}
GST_INFO_ELEMENT (GST_CAT_STATES, element, "done changing bin's state from %s to %s",
- gst_element_statename (old_state),
- gst_element_statename (pending));
+ gst_element_statename (old_state), gst_element_statename (pending));
if (have_async)
ret = GST_STATE_ASYNC;
static GstElementStateReturn
-gst_bin_change_state_norecurse (GstBin *bin)
+gst_bin_change_state_norecurse (GstBin * bin)
{
if (GST_ELEMENT_CLASS (parent_class)->change_state) {
GST_DEBUG_ELEMENT (GST_CAT_STATES, bin, "setting bin's own state\n");
return GST_ELEMENT_CLASS (parent_class)->change_state (GST_ELEMENT (bin));
- } else
+ }
+ else
return GST_STATE_FAILURE;
}
static gboolean
-gst_bin_change_state_type (GstBin *bin,
- GstElementState state,
- GType type)
+gst_bin_change_state_type (GstBin * bin, GstElementState state, GType type)
{
GList *children;
GstElement *child;
while (children) {
child = GST_ELEMENT (children->data);
if (GST_IS_BIN (child)) {
- if (!gst_bin_set_state_type (GST_BIN (child), state,type))
- return FALSE;
- } else if (G_TYPE_CHECK_INSTANCE_TYPE (child,type)) {
- if (!gst_element_set_state (child,state))
- return FALSE;
+ if (!gst_bin_set_state_type (GST_BIN (child), state, type))
+ return FALSE;
+ }
+ else if (G_TYPE_CHECK_INSTANCE_TYPE (child, type)) {
+ if (!gst_element_set_state (child, state))
+ return FALSE;
}
children = g_list_next (children);
}
* Returns: indication if the state change was successfull
*/
gboolean
-gst_bin_set_state_type (GstBin *bin,
- GstElementState state,
- GType type)
+gst_bin_set_state_type (GstBin * bin, GstElementState state, GType type)
{
GstBinClass *oclass;
- GST_DEBUG (GST_CAT_STATES,"gst_bin_set_state_type(\"%s\",%d,%d)\n",
- GST_ELEMENT_NAME (bin), state,type);
+ GST_DEBUG (GST_CAT_STATES, "gst_bin_set_state_type(\"%s\",%d,%d)\n",
+ GST_ELEMENT_NAME (bin), state, type);
g_return_val_if_fail (bin != NULL, FALSE);
g_return_val_if_fail (GST_IS_BIN (bin), FALSE);
- oclass = GST_BIN_CLASS (G_OBJECT_GET_CLASS(bin));
+ oclass = GST_BIN_CLASS (G_OBJECT_GET_CLASS (bin));
if (oclass->change_state_type)
- (oclass->change_state_type) (bin,state,type);
+ (oclass->change_state_type) (bin, state, type);
return TRUE;
}
static void
-gst_bin_dispose (GObject *object)
+gst_bin_dispose (GObject * object)
{
GstBin *bin = GST_BIN (object);
GList *children, *orig;
GstElement *child;
- GST_DEBUG (GST_CAT_REFCOUNTING,"dispose\n");
+ GST_DEBUG (GST_CAT_REFCOUNTING, "dispose\n");
if (bin->children) {
orig = children = g_list_copy (bin->children);
while (children) {
child = GST_ELEMENT (children->data);
- /* gst_object_unref (GST_OBJECT (child)); */
- /* gst_object_unparent (GST_OBJECT (child)); */
gst_bin_remove (bin, child);
children = g_list_next (children);
}
- g_list_free (orig);
g_list_free (bin->children);
+ g_list_free (orig);
}
bin->children = NULL;
bin->numchildren = 0;
*
* Returns: the element with the given name
*/
-GstElement*
-gst_bin_get_by_name (GstBin *bin,
- const gchar *name)
+GstElement *
+gst_bin_get_by_name (GstBin * bin, const gchar * name)
{
GList *children;
GstElement *child;
children = bin->children;
while (children) {
child = GST_ELEMENT (children->data);
- if (!strcmp (GST_OBJECT_NAME(child),name))
+ if (!strcmp (GST_OBJECT_NAME (child), name))
return child;
if (GST_IS_BIN (child)) {
GstElement *res = gst_bin_get_by_name (GST_BIN (child), name);
+
if (res)
- return res;
+ return res;
}
children = g_list_next (children);
}
*
* Returns: the element with the given name
*/
-GstElement*
-gst_bin_get_by_name_recurse_up (GstBin *bin,
- const gchar *name)
+GstElement *
+gst_bin_get_by_name_recurse_up (GstBin * bin, const gchar * name)
{
GstElement *result = NULL;
GstObject *parent;
result = gst_bin_get_by_name (bin, name);
- if (result)
- return result;
-
- parent = gst_object_get_parent (GST_OBJECT (bin));
+ if (!result) {
+ parent = gst_object_get_parent (GST_OBJECT (bin));
- if (parent && GST_IS_BIN (parent)) {
- result = gst_bin_get_by_name_recurse_up (GST_BIN (parent), name);
+ if (parent && GST_IS_BIN (parent)) {
+ result = gst_bin_get_by_name_recurse_up (GST_BIN (parent), name);
+ }
}
return result;
*
* Returns: a GList of elements
*/
-GList*
-gst_bin_get_list (GstBin *bin)
+GList *
+gst_bin_get_list (GstBin * bin)
{
g_return_val_if_fail (bin != NULL, NULL);
g_return_val_if_fail (GST_IS_BIN (bin), NULL);
#ifndef GST_DISABLE_LOADSAVE
static xmlNodePtr
-gst_bin_save_thyself (GstObject *object,
- xmlNodePtr parent)
+gst_bin_save_thyself (GstObject * object, xmlNodePtr parent)
{
GstBin *bin = GST_BIN (object);
xmlNodePtr childlist, elementnode;
}
static void
-gst_bin_restore_thyself (GstObject *object,
- xmlNodePtr self)
+gst_bin_restore_thyself (GstObject * object, xmlNodePtr self)
{
GstBin *bin = GST_BIN (object);
xmlNodePtr field = self->xmlChildrenNode;
GST_INFO_ELEMENT (GST_CAT_XML, GST_ELEMENT (object), "loading children");
childlist = field->xmlChildrenNode;
while (childlist) {
- if (!strcmp (childlist->name, "element")) {
- GstElement *element = gst_element_restore_thyself (childlist, GST_OBJECT (bin));
+ if (!strcmp (childlist->name, "element")) {
+ GstElement *element = gst_element_restore_thyself (childlist, GST_OBJECT (bin));
gst_bin_add (bin, element);
}
- childlist = childlist->next;
+ childlist = childlist->next;
}
}
#endif /* GST_DISABLE_LOADSAVE */
static gboolean
-gst_bin_iterate_func (GstBin *bin)
+gst_bin_iterate_func (GstBin * bin)
{
/* only iterate if this is the manager bin */
- if (GST_ELEMENT_SCHED(bin)->parent == GST_ELEMENT (bin)) {
- return gst_scheduler_iterate (GST_ELEMENT_SCHED(bin));
- } else {
+ if (GST_ELEMENT_SCHED (bin)->parent == GST_ELEMENT (bin)) {
+ return gst_scheduler_iterate (GST_ELEMENT_SCHED (bin));
+ }
+ else {
g_warning ("bin \"%d\" can't be iterated on!\n", GST_ELEMENT_NAME (bin));
}
* can be used to determine it the bin is in EOS.
*/
gboolean
-gst_bin_iterate (GstBin *bin)
+gst_bin_iterate (GstBin * bin)
{
GstBinClass *oclass;
gboolean running = TRUE;
- GST_DEBUG_ENTER("(\"%s\")",GST_ELEMENT_NAME (bin));
+ GST_DEBUG_ENTER ("(\"%s\")", GST_ELEMENT_NAME (bin));
- oclass = GST_BIN_CLASS (G_OBJECT_GET_CLASS(bin));
+ oclass = GST_BIN_CLASS (G_OBJECT_GET_CLASS (bin));
if (oclass->iterate)
running = (oclass->iterate) (bin);
- GST_DEBUG_LEAVE("(\"%s\") %d",GST_ELEMENT_NAME (bin), running);
+ GST_DEBUG_LEAVE ("(\"%s\") %d", GST_ELEMENT_NAME (bin), running);
if (!running) {
if (GST_STATE (bin) == GST_STATE_PLAYING && GST_STATE_PENDING (bin) == GST_STATE_VOID_PENDING) {
- GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, bin, "waiting for child shutdown after useless iteration\n");
- /* gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED); */
+ GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, bin,
+ "waiting for child shutdown after useless iteration\n");
gst_element_wait_state_change (GST_ELEMENT (bin));
GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, bin, "child shutdown\n");
}
return running;
}
-