gst/gstelement.c: Small cleanup in pad activation code.

Original commit message from CVS:
* gst/gstelement.c: (gst_element_pads_activate):
Small cleanup in pad activation code.
This commit is contained in:
Wim Taymans 2006-07-03 16:46:07 +00:00
parent c01188cb00
commit a888719a87
2 changed files with 25 additions and 8 deletions

View file

@ -1,3 +1,8 @@
2006-07-03 Wim Taymans <wim@fluendo.com>
* gst/gstelement.c: (gst_element_pads_activate):
Small cleanup in pad activation code.
2006-07-03 Wim Taymans <wim@fluendo.com>
Patch by: Peter Kjellerstedt <pkj at axis dot com>

View file

@ -2304,30 +2304,42 @@ gst_element_pads_activate (GstElement * element, gboolean active)
gboolean fold_ok;
GST_DEBUG_OBJECT (element, "pads_activate with active %d", active);
/* no need to unset this later, it's just a boolean */
g_value_init (&ret, G_TYPE_BOOLEAN);
g_value_set_boolean (&ret, TRUE);
iter = gst_element_iterate_src_pads (element);
fold_ok = iterator_fold_with_resync
(iter, (GstIteratorFoldFunction) activate_pads, &ret, &active);
gst_iterator_free (iter);
if (!fold_ok || !g_value_get_boolean (&ret)) {
GST_DEBUG_OBJECT (element, "pads_activate failed");
return FALSE;
}
if (G_UNLIKELY (!fold_ok || !g_value_get_boolean (&ret)))
goto src_failed;
iter = gst_element_iterate_sink_pads (element);
fold_ok = iterator_fold_with_resync
(iter, (GstIteratorFoldFunction) activate_pads, &ret, &active);
gst_iterator_free (iter);
if (!fold_ok || !g_value_get_boolean (&ret)) {
GST_DEBUG_OBJECT (element, "pads_activate failed");
return FALSE;
}
if (G_UNLIKELY (!fold_ok || !g_value_get_boolean (&ret)))
goto sink_failed;
GST_DEBUG_OBJECT (element, "pads_activate successful");
return TRUE;
/* ERRORS */
src_failed:
{
GST_DEBUG_OBJECT (element, "source pads_activate failed");
return FALSE;
}
sink_failed:
{
GST_DEBUG_OBJECT (element, "sink pads_activate failed");
return FALSE;
}
}
/* is called with STATE_LOCK */