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

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.
This commit is contained in:
Andy Wingo 2005-09-22 09:30:41 +00:00
parent b907cd9815
commit 54a2e06698
4 changed files with 22 additions and 11 deletions

View file

@ -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>

View 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");

View 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;
}
/**

View 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");