gstfunnel: avoid access of freed pad
[platform/upstream/gstreamer.git] / gst / gstpluginfeature.h
index b8db0f4..a372281 100644 (file)
@@ -38,6 +38,11 @@ G_BEGIN_DECLS
 #define GST_PLUGIN_FEATURE_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PLUGIN_FEATURE, GstPluginFeatureClass))
 #define GST_PLUGIN_FEATURE_CAST(obj)            ((GstPluginFeature*)(obj))
 
+/**
+ * GstPluginFeature:
+ *
+ * Opaque #GstPluginFeature structure.
+ */
 typedef struct _GstPluginFeature GstPluginFeature;
 typedef struct _GstPluginFeatureClass GstPluginFeatureClass;
 
@@ -67,15 +72,13 @@ typedef enum {
  * gst_plugin_feature_get_name:
  * @feature: a #GstPluginFeature to get the name of @feature.
  *
- * Returns a copy of the name of @feature.
- * Caller should g_free() the return value after usage.
- * For a nameless plugin feature, this returns NULL, which you can safely g_free()
- * as well.
+ * Returns the name of @feature.
+ * For a nameless plugin feature, this returns NULL.
  *
- * Returns: (transfer full): the name of @feature. g_free() after usage. MT safe.
+ * Returns: (transfer none): the name of @feature. MT safe.
  *
  */
-#define                 gst_plugin_feature_get_name(feature)      gst_object_get_name(GST_OBJECT_CAST(feature))
+#define                 gst_plugin_feature_get_name(feature)      GST_OBJECT_NAME(feature)
 
 /**
  * gst_plugin_feature_set_name:
@@ -87,44 +90,6 @@ typedef enum {
 #define                 gst_plugin_feature_set_name(feature,name) gst_object_set_name(GST_OBJECT_CAST(feature),name)
 
 /**
- * GstPluginFeature:
- *
- * Opaque #GstPluginFeature structure.
- */
-struct _GstPluginFeature {
-  GstObject      object;
-
-  /*< private >*/
-  gboolean       loaded;
-  guint          rank;
-
-  const gchar   *plugin_name;
-  GstPlugin     *plugin;      /* weak ref */
-
-  /*< private >*/
-  gpointer _gst_reserved[GST_PADDING - 1];
-};
-
-struct _GstPluginFeatureClass {
-  GstObjectClass        parent_class;
-
-  /*< private >*/
-  gpointer _gst_reserved[GST_PADDING];
-};
-
-/**
- * GstTypeNameData:
- * @name: a name
- * @type: a GType
- *
- * Structure used for filtering based on @name and @type.
- */
-typedef struct {
-  const gchar   *name;
-  GType          type;
-} GstTypeNameData;
-
-/**
  * GstPluginFeatureFilter:
  * @feature: the pluginfeature to check
  * @user_data: the user_data that has been passed on e.g.
@@ -144,14 +109,13 @@ GType           gst_plugin_feature_get_type             (void);
 GstPluginFeature *
                 gst_plugin_feature_load                 (GstPluginFeature *feature);
 
-gboolean        gst_plugin_feature_type_name_filter     (GstPluginFeature *feature,
-                                                         GstTypeNameData *data);
-
 void            gst_plugin_feature_set_rank             (GstPluginFeature *feature, guint rank);
 guint           gst_plugin_feature_get_rank             (GstPluginFeature *feature);
 
+GstPlugin     * gst_plugin_feature_get_plugin           (GstPluginFeature *feature);
+
 void            gst_plugin_feature_list_free            (GList *list);
-GList          *gst_plugin_feature_list_copy            (GList *list);
+GList          *gst_plugin_feature_list_copy            (GList *list) G_GNUC_MALLOC;
 void            gst_plugin_feature_list_debug           (GList *list);
 
 /**