static GstPad * 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) { GType pad_type = GST_PAD_TEMPLATE_GTYPE (templ) == G_TYPE_NONE ? GST_TYPE_GHOST_PAD : GST_PAD_TEMPLATE_GTYPE (templ); g_return_val_if_fail (g_type_is_a (pad_type, GST_TYPE_GHOST_PAD), NULL); ret = g_object_new (pad_type, "name", name, "direction", dir, "template", templ, NULL); } else { ret = g_object_new (GST_TYPE_GHOST_PAD, "name", name, "direction", dir, NULL); } if (!gst_ghost_pad_construct (ret)) goto construct_failed; return GST_PAD_CAST (ret); construct_failed: /* already logged */ gst_object_unref (ret); return NULL; }
static void gst_pad_template_init (GstPadTemplate * templ) { /* GstPadTemplate objects are usually leaked */ GST_OBJECT_FLAG_SET (templ, GST_OBJECT_FLAG_MAY_BE_LEAKED); GST_PAD_TEMPLATE_GTYPE (templ) = G_TYPE_NONE; }