element: link_many should activate pads if needed

gst_element_link_many does some magic and creates ghostpads
if needed, but it didn't set the newly created ghostpad to
active if needed. This patch fixes it.

https://bugzilla.gnome.org/show_bug.cgi?id=626784
This commit is contained in:
Thiago Santos 2010-08-12 20:23:45 -03:00
parent 41c04c7471
commit 706f0f657b

View file

@ -1450,18 +1450,28 @@ ghost_up (GstElement * e, GstPad * pad)
static gint ghost_pad_index = 0;
GstPad *gpad;
gchar *name;
GstState current;
GstState next;
GstObject *parent = GST_OBJECT_PARENT (e);
name = g_strdup_printf ("ghost%d", ghost_pad_index++);
gpad = gst_ghost_pad_new (name, pad);
g_free (name);
GST_STATE_LOCK (e);
gst_element_get_state (e, &current, &next, 0);
if (current > GST_STATE_READY || next == GST_STATE_PAUSED)
gst_pad_set_active (gpad, TRUE);
if (!gst_element_add_pad ((GstElement *) parent, gpad)) {
g_warning ("Pad named %s already exists in element %s\n",
GST_OBJECT_NAME (gpad), GST_OBJECT_NAME (parent));
gst_object_unref ((GstObject *) gpad);
GST_STATE_UNLOCK (e);
return NULL;
}
GST_STATE_UNLOCK (e);
return gpad;
}