miniobjects: pass copy, dispose and free function to gst_mini_object_init()
[platform/upstream/gstreamer.git] / gst / gstminiobject.h
index 76cc193..f4e53a2 100644 (file)
@@ -69,7 +69,7 @@ typedef void (*GstMiniObjectFreeFunction) (GstMiniObject *obj);
 
  /**
  * GstMiniObjectWeakNotify:
- * @data: data that was provided when the weak reference was established
+ * @user_data: data that was provided when the weak reference was established
  * @where_the_mini_object_was: the mini object being finalized
  *
  * A #GstMiniObjectWeakNotify function can be added to a mini object as a
@@ -80,7 +80,7 @@ typedef void (*GstMiniObjectFreeFunction) (GstMiniObject *obj);
  *
  * Since: 0.10.35
  */
-typedef void (*GstMiniObjectWeakNotify) (gpointer data,
+typedef void (*GstMiniObjectWeakNotify) (gpointer user_data,
     GstMiniObject * where_the_mini_object_was);
 
 /**
@@ -154,7 +154,6 @@ typedef enum
  * @type: the GType of the object
  * @refcount: atomic refcount
  * @flags: extra flags.
- * @size: the size of the structure
  * @copy: a copy function
  * @dispose: a dispose function
  * @free: the free function
@@ -177,16 +176,15 @@ struct _GstMiniObject {
   GstMiniObjectFreeFunction free;
 
   /* < private > */
-  /* Used to keep track of weak ref notifies */
-  guint n_weak_refs;
-  struct
-  {
-    GstMiniObjectWeakNotify notify;
-    gpointer data;
-  } *weak_refs;
+  /* Used to keep track of weak ref notifies and qdata */
+  guint n_qdata;
+  gpointer qdata;
 };
 
-void            gst_mini_object_init            (GstMiniObject *mini_object, GType type);
+void            gst_mini_object_init (GstMiniObject *mini_object, GType type,
+                                      GstMiniObjectCopyFunction copy_func,
+                                      GstMiniObjectDisposeFunction dispose_func,
+                                      GstMiniObjectFreeFunction free_func);
 
 GstMiniObject * gst_mini_object_copy           (const GstMiniObject *mini_object) G_GNUC_MALLOC;
 gboolean        gst_mini_object_is_writable    (const GstMiniObject *mini_object);
@@ -203,6 +201,11 @@ void            gst_mini_object_weak_unref (GstMiniObject *object,
                                                 GstMiniObjectWeakNotify notify,
                                                 gpointer data);
 
+void            gst_mini_object_set_qdata       (GstMiniObject *object, GQuark quark,
+                                                 gpointer data, GDestroyNotify destroy);
+gpointer        gst_mini_object_get_qdata       (GstMiniObject *object, GQuark quark);
+
+
 gboolean        gst_mini_object_replace         (GstMiniObject **olddata, GstMiniObject *newdata);
 gboolean        gst_mini_object_take            (GstMiniObject **olddata, GstMiniObject *newdata);
 GstMiniObject * gst_mini_object_steal           (GstMiniObject **olddata);