Add helper function to set GstObject pointers with proper ref/unref sequence.
authorWim Taymans <wim.taymans@gmail.com>
Fri, 17 Jan 2003 17:44:07 +0000 (17:44 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Fri, 17 Jan 2003 17:44:07 +0000 (17:44 +0000)
Original commit message from CVS:
Add helper function to set GstObject pointers with proper ref/unref
sequence.

gst/gstobject.c
gst/gstobject.h

index 77a0169..6de04bf 100644 (file)
@@ -229,6 +229,27 @@ gst_object_sink (GstObject *object)
 }
 
 /**
+ * gst_object_swap:
+ * @oldobj: pointer to place of old GstObject
+ * @newobj: new GstObject
+ *
+ * Unrefs the object pointer to by oldobj, refs the newobj and
+ * puts the newobj in *oldobj.
+ */
+void
+gst_object_swap (GstObject **oldobj, GstObject *newobj)
+{
+  if (*oldobj != newobj) {
+    if (newobj)
+      gst_object_ref (newobj);
+    if (*oldobj)
+      gst_object_unref (*oldobj);
+
+    *oldobj = newobj;
+  }
+}
+
+/**
  * gst_object_destroy:
  * @object: GstObject to destroy
  *
index faf273b..2291003 100644 (file)
@@ -146,6 +146,8 @@ void                gst_object_restore_thyself      (GstObject *object, xmlNodePtr self);
 GstObject *    gst_object_ref                  (GstObject *object);
 void           gst_object_unref                (GstObject *object);
 void           gst_object_sink                 (GstObject *object);
+
+void           gst_object_swap                 (GstObject **oldobj, GstObject *newobj);
 /* destroying an object */
 void           gst_object_destroy              (GstObject *object);