aggregator: Remove klass->sinkpads_type
authorMathieu Duponchelle <mathieu@centricular.com>
Mon, 6 Nov 2017 20:07:51 +0000 (21:07 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 2 Dec 2017 15:10:27 +0000 (15:10 +0000)
This posed problems for the python bindings (and possibly others).

Instead, subclasses now use add_pad_template_with_gtype.

https://bugzilla.gnome.org/show_bug.cgi?id=789986

libs/gst/base/gstaggregator.c
libs/gst/base/gstaggregator.h

index 40e1e18..9dddf83 100644 (file)
@@ -1564,6 +1564,9 @@ gst_aggregator_default_create_new_pad (GstAggregator * self,
   GstAggregatorPrivate *priv = self->priv;
   gint serial = 0;
   gchar *name = NULL;
+  GType pad_type =
+      GST_PAD_TEMPLATE_GTYPE (templ) ==
+      G_TYPE_NONE ? GST_TYPE_AGGREGATOR_PAD : GST_PAD_TEMPLATE_GTYPE (templ);
 
   if (templ->direction != GST_PAD_SINK)
     goto not_sink;
@@ -1584,7 +1587,7 @@ gst_aggregator_default_create_new_pad (GstAggregator * self,
   }
 
   name = g_strdup_printf ("sink_%u", serial);
-  agg_pad = g_object_new (GST_AGGREGATOR_GET_CLASS (self)->sinkpads_type,
+  agg_pad = g_object_new (pad_type,
       "name", name, "direction", GST_PAD_SINK, "template", templ, NULL);
   g_free (name);
 
@@ -2224,8 +2227,6 @@ gst_aggregator_class_init (GstAggregatorClass * klass)
   GST_DEBUG_CATEGORY_INIT (aggregator_debug, "aggregator",
       GST_DEBUG_FG_MAGENTA, "GstAggregator");
 
-  klass->sinkpads_type = GST_TYPE_AGGREGATOR_PAD;
-
   klass->sink_event = gst_aggregator_default_sink_event;
   klass->sink_query = gst_aggregator_default_sink_query;
 
index d23dd9c..fc2d6ae 100644 (file)
@@ -152,9 +152,6 @@ struct _GstAggregator
 
 /**
  * GstAggregatorClass:
- * @sinkpads_type:  Optional.
- *                  The type of the pads that should be created when
- *                  GstElement.request_new_pad is called.
  * @flush:          Optional.
  *                  Called after a successful flushing seek, once all the flush
  *                  stops have been received. Flush pad-specific data in
@@ -233,8 +230,6 @@ struct _GstAggregator
 struct _GstAggregatorClass {
   GstElementClass   parent_class;
 
-  GType             sinkpads_type;
-
   GstFlowReturn     (*flush)          (GstAggregator    *  aggregator);
 
   GstBuffer *       (*clip)           (GstAggregator    *  aggregator,