gst/gstelement.c: We need to deactivate src pads first and then sink pads.

Original commit message from CVS:
* gst/gstelement.c: (gst_element_pads_activate):
We need to deactivate src pads first and then sink pads.
The reason is the src pads might be blocking while holding the streaming
lock, so we need to deactivate them first so that deactivating the sink
pads doesn't block (since it will require the streaming lock).
This commit is contained in:
Edward Hervey 2006-06-22 17:09:13 +00:00
parent 201bdf7e27
commit 1f5a5c6bbe
2 changed files with 10 additions and 8 deletions

View file

@ -1,3 +1,11 @@
2006-06-22 Edward Hervey <edward@fluendo.com>
* gst/gstelement.c: (gst_element_pads_activate):
We need to deactivate src pads first and then sink pads.
The reason is the src pads might be blocking while holding the streaming
lock, so we need to deactivate them first so that deactivating the sink
pads doesn't block (since it will require the streaming lock).
2006-06-22 Wim Taymans <wim@fluendo.com>
* libs/gst/base/gstbasetransform.c:

View file

@ -2308,10 +2308,7 @@ gst_element_pads_activate (GstElement * element, gboolean active)
g_value_init (&ret, G_TYPE_BOOLEAN);
g_value_set_boolean (&ret, TRUE);
if (active)
iter = gst_element_iterate_src_pads (element);
else
iter = gst_element_iterate_sink_pads (element);
iter = gst_element_iterate_src_pads (element);
fold_ok = iterator_fold_with_resync
(iter, (GstIteratorFoldFunction) activate_pads, &ret, &active);
gst_iterator_free (iter);
@ -2320,10 +2317,7 @@ gst_element_pads_activate (GstElement * element, gboolean active)
return FALSE;
}
if (active)
iter = gst_element_iterate_sink_pads (element);
else
iter = gst_element_iterate_src_pads (element);
iter = gst_element_iterate_sink_pads (element);
fold_ok = iterator_fold_with_resync
(iter, (GstIteratorFoldFunction) activate_pads, &ret, &active);
gst_iterator_free (iter);