mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-13 02:45:35 +00:00
pad, ghostpad: use the template gtype if specified
Also make sure the GType passed to the with_gtype versions of the template constructors is_a GstPad https://bugzilla.gnome.org/show_bug.cgi?id=793933
This commit is contained in:
parent
91798e16cc
commit
7847e69ef8
3 changed files with 12 additions and 3 deletions
|
@ -627,12 +627,15 @@ gst_ghost_pad_new_full (const gchar * name, GstPadDirection dir,
|
|||
GstPadTemplate * templ)
|
||||
{
|
||||
GstGhostPad *ret;
|
||||
|
||||
g_return_val_if_fail (dir != GST_PAD_UNKNOWN, NULL);
|
||||
|
||||
/* OBJECT CREATION */
|
||||
if (templ) {
|
||||
ret = g_object_new (GST_TYPE_GHOST_PAD, "name", name,
|
||||
GType pad_type =
|
||||
GST_PAD_TEMPLATE_GTYPE (templ) ==
|
||||
G_TYPE_NONE ? GST_TYPE_GHOST_PAD : GST_PAD_TEMPLATE_GTYPE (templ);
|
||||
|
||||
ret = g_object_new (pad_type, "name", name,
|
||||
"direction", dir, "template", templ, NULL);
|
||||
} else {
|
||||
ret = g_object_new (GST_TYPE_GHOST_PAD, "name", name,
|
||||
|
|
|
@ -864,8 +864,11 @@ GstPad *
|
|||
gst_pad_new_from_template (GstPadTemplate * templ, const gchar * name)
|
||||
{
|
||||
g_return_val_if_fail (GST_IS_PAD_TEMPLATE (templ), NULL);
|
||||
GType pad_type =
|
||||
GST_PAD_TEMPLATE_GTYPE (templ) ==
|
||||
G_TYPE_NONE ? GST_TYPE_PAD : GST_PAD_TEMPLATE_GTYPE (templ);
|
||||
|
||||
return g_object_new (GST_TYPE_PAD,
|
||||
return g_object_new (pad_type,
|
||||
"name", name, "direction", templ->direction, "template", templ, NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -342,6 +342,8 @@ gst_pad_template_new_from_static_pad_template_with_gtype (GstStaticPadTemplate *
|
|||
GstPadTemplate *new;
|
||||
GstCaps *caps;
|
||||
|
||||
g_return_val_if_fail (g_type_is_a (pad_type, GST_TYPE_PAD), NULL);
|
||||
|
||||
if (!name_is_valid (pad_template->name_template, pad_template->presence))
|
||||
return NULL;
|
||||
|
||||
|
@ -423,6 +425,7 @@ gst_pad_template_new_with_gtype (const gchar * name_template,
|
|||
|| direction == GST_PAD_SINK, NULL);
|
||||
g_return_val_if_fail (presence == GST_PAD_ALWAYS
|
||||
|| presence == GST_PAD_SOMETIMES || presence == GST_PAD_REQUEST, NULL);
|
||||
g_return_val_if_fail (g_type_is_a (pad_type, GST_TYPE_PAD), NULL);
|
||||
|
||||
if (!name_is_valid (name_template, presence)) {
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in a new issue