From f7de744ec9dba62662d2148320fddc0db22a0782 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 26 May 2017 17:26:08 +0200 Subject: [PATCH] pipewiresink: fix buffer reuse Only unref the buffer back into the pool after we get the signal from the stream that we can reuse the buffer. --- pipewire/gst/gstpipewiresink.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pipewire/gst/gstpipewiresink.c b/pipewire/gst/gstpipewiresink.c index fb10707c3..6cee741ec 100644 --- a/pipewire/gst/gstpipewiresink.c +++ b/pipewire/gst/gstpipewiresink.c @@ -523,6 +523,7 @@ on_new_buffer (struct pw_listener *listener, buf = g_hash_table_lookup (pwsink->buf_ids, GINT_TO_POINTER (id)); if (buf) { + gst_buffer_unref (buf); pw_thread_main_loop_signal (pwsink->main_loop, FALSE); } } @@ -561,8 +562,6 @@ do_send_buffer (GstPipeWireSink *pwsink) pw_thread_main_loop_signal (pwsink->main_loop, FALSE); } else pwsink->need_ready--; - - gst_buffer_unref (buffer); } @@ -705,8 +704,9 @@ gst_pipewire_sink_render (GstBaseSink * bsink, GstBuffer * buffer) gst_buffer_unmap (b, &info); gst_buffer_resize (b, 0, gst_buffer_get_size (buffer)); buffer = b; - } else + } else { gst_buffer_ref (buffer); + } GST_DEBUG ("push buffer in queue"); g_queue_push_tail (&pwsink->queue, buffer);