summaryrefslogtreecommitdiffstats
path: root/gst/selector/gstoutputselector.c
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sourceforge.net>2008-02-07 13:48:20 +0000
committerStefan Kost <ensonic@users.sourceforge.net>2008-02-07 13:48:20 +0000
commit26abf37c0365079b3dffae19c94d6690f2f1584e (patch)
tree31853488edac64ca88808cedabb6d456aa6832de /gst/selector/gstoutputselector.c
parentfd149d267fb4028e5bf382104bdcde813348a9b3 (diff)
downloadgst-plugins-bad-26abf37c0365079b3dffae19c94d6690f2f1584e.tar.gz
gst-plugins-bad-26abf37c0365079b3dffae19c94d6690f2f1584e.tar.bz2
gst-plugins-bad-26abf37c0365079b3dffae19c94d6690f2f1584e.zip
gst/multifile/gstmultifilesink.c: Add a fixme comment.
Original commit message from CVS: * gst/multifile/gstmultifilesink.c: Add a fixme comment. * gst/selector/gstoutputselector.c: Fix same leak as in input-selector. * tests/icles/output-selector-test.c: Improve the test.
Diffstat (limited to 'gst/selector/gstoutputselector.c')
-rw-r--r--gst/selector/gstoutputselector.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/gst/selector/gstoutputselector.c b/gst/selector/gstoutputselector.c
index 1d1dc05a..a60df6a9 100644
--- a/gst/selector/gstoutputselector.c
+++ b/gst/selector/gstoutputselector.c
@@ -25,13 +25,6 @@
* Direct input stream to one out of N output pads.
*/
-/* FIXME: By default basesinks require some prerolled data before changing
- to playing state. Also pipeline with output-selector connected to multiple
- sink elements won't change to playing until all sink elements have received
- the preroll data. Currently this can be worked around using live source element
- and and exporting GST_COMPAT="no-live-preroll".
-*/
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -212,7 +205,12 @@ gst_output_selector_set_property (GObject * object, guint prop_id,
GstPad *next_pad =
gst_element_get_static_pad (GST_ELEMENT (sel),
g_value_get_string (value));
- if (next_pad && (next_pad != sel->active_srcpad)) {
+ if (!next_pad) {
+ GST_WARNING ("pad %s not found, activation failed",
+ g_value_get_string (value));
+ break;
+ }
+ if (next_pad != sel->active_srcpad) {
/* switch to new srcpad in next chain run */
if (sel->pending_srcpad != NULL) {
GST_INFO ("replacing pending switch");
@@ -220,7 +218,8 @@ gst_output_selector_set_property (GObject * object, guint prop_id,
}
sel->pending_srcpad = next_pad;
} else {
- GST_WARNING ("setting active pad failed");
+ GST_INFO ("pad already active");
+ gst_object_unref (next_pad);
}
break;
}