shmsink: unref buffer if no clients are connected

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
This commit is contained in:
Aleix Conchillo Flaque 2013-06-19 12:52:52 -07:00 committed by Olivier Crête
parent c0ce94dbf2
commit 44807dcc1a

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