gst/gstbuffer.c (gst_buffer_get_caps): Like all our _get accessors returning refcount...
authorAndy Wingo <wingo@pobox.com>
Thu, 22 Sep 2005 09:30:41 +0000 (09:30 +0000)
committerAndy Wingo <wingo@pobox.com>
Thu, 22 Sep 2005 09:30:41 +0000 (09:30 +0000)
Original commit message from CVS:
2005-09-22  Andy Wingo  <wingo@pobox.com>

* gst/gstbuffer.c (gst_buffer_get_caps): Like all our _get
accessors returning refcounted objects, return a ref.

* check/gst/gstbuffer.c (GST_START_TEST): Use refcount-idempotent
accessor for caps. IDEMPOTENCE. Oh yes.

ChangeLog
check/gst/gstbuffer.c
gst/gstbuffer.c
tests/check/gst/gstbuffer.c

index 5d05019..e0a2c32 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-09-22  Andy Wingo  <wingo@pobox.com>
+
+       * gst/gstbuffer.c (gst_buffer_get_caps): Like all our _get
+       accessors returning refcounted objects, return a ref.
+
+       * check/gst/gstbuffer.c (GST_START_TEST): Use refcount-idempotent
+       accessor for caps. IDEMPOTENCE. Oh yes.
+
 2005-09-21  Francis Labonte  <francis_labonte at hotmail dot com>
 
        Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
index 5791214..eee5e18 100644 (file)
@@ -31,12 +31,12 @@ GST_START_TEST (test_caps)
   caps = gst_caps_from_string ("audio/x-raw-int");
   ASSERT_CAPS_REFCOUNT (caps, "caps", 1);
 
-  fail_unless (gst_buffer_get_caps (buffer) == NULL);
+  fail_unless (GST_BUFFER_CAPS (buffer) == NULL);
 
   gst_buffer_set_caps (buffer, caps);
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
 
-  fail_unless (gst_buffer_get_caps (buffer) == caps);
+  fail_unless (GST_BUFFER_CAPS (buffer) == caps);
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
 
   caps2 = gst_caps_from_string ("audio/x-raw-float");
index 34887df..ad7e731 100644 (file)
@@ -274,21 +274,24 @@ gst_buffer_new_and_alloc (guint size)
  * is not media type attached to this buffer or when the media
  * type is the same as the previous received buffer.
  *
- * This function does not increment the refcount of the caps. The
- * caps pointer will therefore remain valid until the buffer is
- * unreffed.
- *
- * Returns: the #GstCaps, or NULL if there was an error or there
- * were no caps on this buffer.
+ * Returns: a reference to the #GstCaps, or NULL if there were no caps on this
+ * buffer.
  */
 /* FIXME can we make this threadsafe without a lock on the buffer?
  * We can use compare and swap and atomic reads. */
 GstCaps *
 gst_buffer_get_caps (GstBuffer * buffer)
 {
+  GstCaps *ret;
+
   g_return_val_if_fail (buffer != NULL, NULL);
 
-  return GST_BUFFER_CAPS (buffer);
+  ret = GST_BUFFER_CAPS (buffer);
+
+  if (ret)
+    gst_caps_ref (ret);
+
+  return ret;
 }
 
 /**
index 5791214..eee5e18 100644 (file)
@@ -31,12 +31,12 @@ GST_START_TEST (test_caps)
   caps = gst_caps_from_string ("audio/x-raw-int");
   ASSERT_CAPS_REFCOUNT (caps, "caps", 1);
 
-  fail_unless (gst_buffer_get_caps (buffer) == NULL);
+  fail_unless (GST_BUFFER_CAPS (buffer) == NULL);
 
   gst_buffer_set_caps (buffer, caps);
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
 
-  fail_unless (gst_buffer_get_caps (buffer) == caps);
+  fail_unless (GST_BUFFER_CAPS (buffer) == caps);
   ASSERT_CAPS_REFCOUNT (caps, "caps", 2);
 
   caps2 = gst_caps_from_string ("audio/x-raw-float");