summaryrefslogtreecommitdiffstats
path: root/gst/interleave/interleave.c
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2007-10-27 16:04:48 +0000
committerTim-Philipp Müller <tim@centricular.net>2007-10-27 16:04:48 +0000
commit5a046c7e0395cec55a540458b9524024486507a8 (patch)
tree55d927b190e4b5ea1f8316e6664855a13279d1fc /gst/interleave/interleave.c
parent94c519cead2e9caf334f7f0f465a4f99b046921c (diff)
gst/interleave/interleave.c: Let's not call every request pad we create "sink%d", that'll create problems if there's ...
Original commit message from CVS: * gst/interleave/interleave.c: (gst_interleave_request_new_pad): Let's not call every request pad we create "sink%d", that'll create problems if there's to be more than one pad. Fixes #490682. * tests/check/Makefile.am: * tests/check/elements/.cvsignore: * tests/check/elements/interleave.c: Add unit test for the above.
Diffstat (limited to 'gst/interleave/interleave.c')
-rw-r--r--gst/interleave/interleave.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/gst/interleave/interleave.c b/gst/interleave/interleave.c
index d8f4fb97..0ca2ea6c 100644
--- a/gst/interleave/interleave.c
+++ b/gst/interleave/interleave.c
@@ -195,27 +195,30 @@ static GstPad *
gst_interleave_request_new_pad (GstElement * element, GstPadTemplate * templ,
const gchar * name)
{
- GstPad *new;
GstInterleave *self = GST_INTERLEAVE (element);
+ GstPad *new_pad;
+ gchar *pad_name;
- new = g_object_new (GST_TYPE_INTERLEAVE_PAD,
- "name", GST_OBJECT_NAME (templ), "direction", templ->direction,
- "template", templ, NULL);
- GST_INTERLEAVE_PAD (new)->channel = self->channels++;
+ pad_name = g_strdup_printf ("sink%d", self->channels);
+ new_pad = g_object_new (GST_TYPE_INTERLEAVE_PAD, "name", pad_name,
+ "direction", templ->direction, "template", templ, NULL);
+ g_free (pad_name);
+ GST_INTERLEAVE_PAD (new_pad)->channel = self->channels;
+ ++self->channels;
- gst_pad_set_setcaps_function (new,
+ gst_pad_set_setcaps_function (new_pad,
GST_DEBUG_FUNCPTR (gst_interleave_sink_setcaps));
-
- gst_pad_set_chain_function (new, GST_DEBUG_FUNCPTR (gst_interleave_chain));
- gst_pad_set_activatepush_function (new,
+ gst_pad_set_chain_function (new_pad,
+ GST_DEBUG_FUNCPTR (gst_interleave_chain));
+ gst_pad_set_activatepush_function (new_pad,
GST_DEBUG_FUNCPTR (gst_interleave_sink_activate_push));
self->pending_in++;
- GST_PAD_UNSET_FLUSHING (new);
- gst_element_add_pad (element, new);
+ GST_PAD_UNSET_FLUSHING (new_pad);
+ gst_element_add_pad (element, new_pad);
- return new;
+ return new_pad;
}
static void