/**
* 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
* callback that gets triggered when the mini object is finalized. Since the
* mini object is already being finalized when the #GstMiniObjectWeakNotify is
*
* Since: 0.10.35
*/
-typedef void (*GstMiniObjectWeakNotify) (gpointer data,
+typedef void (*GstMiniObjectWeakNotify) (gpointer user_data,
GstMiniObject * where_the_mini_object_was);
/**
- * GST_MINI_OBJECT_FLAGS:
- * @obj: MiniObject to return flags for.
+ * GST_MINI_OBJECT_TYPE:
+ * @obj: MiniObject to return type for.
*
- * This macro returns the entire set of flags for the mini-object.
+ * This macro returns the type of the mini-object.
*/
#define GST_MINI_OBJECT_TYPE(obj) (GST_MINI_OBJECT_CAST(obj)->type)
/**
#define GST_MINI_OBJECT_REFCOUNT_VALUE(obj) (g_atomic_int_get (&(GST_MINI_OBJECT_CAST(obj))->refcount))
/**
- * GST_MINI_OBJECT_SIZE:
- * @obj: a #GstMiniObject
- *
- * Get the allocated size of @obj.
- */
-#define GST_MINI_OBJECT_SIZE(obj) ((GST_MINI_OBJECT_CAST(obj))->size)
-
-/**
* GstMiniObject:
+ * @type: the GType of the object
* @refcount: atomic refcount
* @flags: extra flags.
* @copy: a copy function
/*< public >*/ /* with COW */
gint refcount;
guint flags;
- gsize size;
GstMiniObjectCopyFunction copy;
GstMiniObjectDisposeFunction dispose;
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, gsize size);
+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);
+GstMiniObject * gst_mini_object_copy (const GstMiniObject *mini_object) G_GNUC_MALLOC;
gboolean gst_mini_object_is_writable (const GstMiniObject *mini_object);
GstMiniObject * gst_mini_object_make_writable (GstMiniObject *mini_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);
+/**
+ * GST_DEFINE_MINI_OBJECT_TYPE:
+ * @TypeName: name of the new type in CamelCase
+ * @type_name: name of the new type
+ *
+ * Define a new mini-object type with the given name
+ */
#define GST_DEFINE_MINI_OBJECT_TYPE(TypeName,type_name) \
G_DEFINE_BOXED_TYPE(TypeName,type_name, \
(GBoxedCopyFunc) gst_mini_object_ref, \
- (GBoxedFreeFunc)gst_mini_object_unref)
+ (GBoxedFreeFunc) gst_mini_object_unref)
G_END_DECLS