shmsink: unref buffer if no clients are connected
authorAleix Conchillo Flaque <aleix@oblong.com>
Wed, 19 Jun 2013 19:52:52 +0000 (12:52 -0700)
committerOlivier CrĂȘte <olivier.crete@collabora.com>
Wed, 19 Jun 2013 22:36:19 +0000 (18:36 -0400)
If no client has received the command, unref the buffer. This will
make sure that the shared memory area does not get filled with buffers
no one knows about.

https://bugzilla.gnome.org/show_bug.cgi?id=702684

sys/shm/gstshmsink.c

index 1310847..cbebdf5 100644 (file)
@@ -743,7 +743,10 @@ gst_shm_sink_render (GstBaseSink * bsink, GstBuffer * buf)
 
   GST_OBJECT_UNLOCK (self);
 
-  if (rv == -1) {
+  if (rv == 0) {
+    GST_DEBUG_OBJECT (self, "No clients connected, unreffing buffer");
+    gst_buffer_unref (sendbuf);
+  } else if (rv == -1) {
     GST_ELEMENT_ERROR (self, STREAM, FAILED, ("Invalid allocated buffer"),
         ("The shmpipe library rejects our buffer, this is a bug"));
     ret = GST_FLOW_ERROR;