gst/base/gstbasetransform.c: Don't leak refcounts on buffers.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 31 Aug 2005 13:50:40 +0000 (13:50 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 31 Aug 2005 13:50:40 +0000 (13:50 +0000)
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_setcaps),
(gst_base_transform_handle_buffer), (gst_base_transform_chain):
Don't leak refcounts on buffers.

ChangeLog
gst/base/gstbasetransform.c
libs/gst/base/gstbasetransform.c

index a1c1cd6..7c3a1e8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2005-08-31  Wim Taymans  <wim@fluendo.com>
 
+       * gst/base/gstbasetransform.c: (gst_base_transform_setcaps),
+       (gst_base_transform_handle_buffer), (gst_base_transform_chain):
+       Don't leak refcounts on buffers.
+
+2005-08-31  Wim Taymans  <wim@fluendo.com>
+
        * gst/base/gstbasetransform.c: (gst_base_transform_configure_caps),
        (gst_base_transform_setcaps), (gst_base_transform_handle_buffer),
        (gst_base_transform_chain), (gst_base_transform_change_state):
index 39b0c1e..cfd1bec 100644 (file)
@@ -824,6 +824,9 @@ gst_base_transform_handle_buffer (GstBaseTransform * trans, GstBuffer * inbuf,
   else
     GST_LOG_OBJECT (trans, "... and offset NONE");
 
+  if (!trans->negotiated)
+    goto not_negotiated;
+
   if (trans->in_place) {
     /* passthrough elements or when the buffer is writable
      * can be performed with the _ip method */
@@ -904,6 +907,13 @@ gst_base_transform_handle_buffer (GstBaseTransform * trans, GstBuffer * inbuf,
   return ret;
 
   /* ERRORS */
+not_negotiated:
+  {
+    gst_buffer_unref (inbuf);
+    GST_ELEMENT_ERROR (trans, STREAM, NOT_IMPLEMENTED,
+        ("not negotiated"), ("not negotiated"));
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
 no_size:
   {
     gst_buffer_unref (inbuf);
@@ -958,9 +968,6 @@ gst_base_transform_chain (GstPad * pad, GstBuffer * buffer)
 
   trans = GST_BASE_TRANSFORM (gst_pad_get_parent (pad));
 
-  if (!trans->negotiated)
-    goto not_negotiated;
-
   ret = gst_base_transform_handle_buffer (trans, buffer, &outbuf);
   if (ret == GST_FLOW_OK) {
     ret = gst_pad_push (trans->srcpad, outbuf);
@@ -969,11 +976,6 @@ gst_base_transform_chain (GstPad * pad, GstBuffer * buffer)
   gst_object_unref (trans);
 
   return ret;
-
-not_negotiated:
-  {
-    return GST_FLOW_NOT_NEGOTIATED;
-  }
 }
 
 static void
index 39b0c1e..cfd1bec 100644 (file)
@@ -824,6 +824,9 @@ gst_base_transform_handle_buffer (GstBaseTransform * trans, GstBuffer * inbuf,
   else
     GST_LOG_OBJECT (trans, "... and offset NONE");
 
+  if (!trans->negotiated)
+    goto not_negotiated;
+
   if (trans->in_place) {
     /* passthrough elements or when the buffer is writable
      * can be performed with the _ip method */
@@ -904,6 +907,13 @@ gst_base_transform_handle_buffer (GstBaseTransform * trans, GstBuffer * inbuf,
   return ret;
 
   /* ERRORS */
+not_negotiated:
+  {
+    gst_buffer_unref (inbuf);
+    GST_ELEMENT_ERROR (trans, STREAM, NOT_IMPLEMENTED,
+        ("not negotiated"), ("not negotiated"));
+    return GST_FLOW_NOT_NEGOTIATED;
+  }
 no_size:
   {
     gst_buffer_unref (inbuf);
@@ -958,9 +968,6 @@ gst_base_transform_chain (GstPad * pad, GstBuffer * buffer)
 
   trans = GST_BASE_TRANSFORM (gst_pad_get_parent (pad));
 
-  if (!trans->negotiated)
-    goto not_negotiated;
-
   ret = gst_base_transform_handle_buffer (trans, buffer, &outbuf);
   if (ret == GST_FLOW_OK) {
     ret = gst_pad_push (trans->srcpad, outbuf);
@@ -969,11 +976,6 @@ gst_base_transform_chain (GstPad * pad, GstBuffer * buffer)
   gst_object_unref (trans);
 
   return ret;
-
-not_negotiated:
-  {
-    return GST_FLOW_NOT_NEGOTIATED;
-  }
 }
 
 static void