mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 09:10:36 +00:00
shmsink: Keep shmsink referenced while there are still buffers around
This commit is contained in:
parent
ca9d60702f
commit
1634a9f262
1 changed files with 13 additions and 1 deletions
|
@ -298,6 +298,7 @@ gst_shm_sink_start (GstBaseSink * bsink)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
sp_set_data (self->pipe, self);
|
||||
g_free (self->socket_path);
|
||||
self->socket_path = g_strdup (sp_writer_get_path (self->pipe));
|
||||
|
||||
|
@ -411,8 +412,17 @@ gst_shm_sink_render (GstBaseSink * bsink, GstBuffer * buf)
|
|||
static void
|
||||
gst_shm_sink_free_buffer (gpointer data)
|
||||
{
|
||||
ShmPipe *pipe;
|
||||
ShmBlock *block = data;
|
||||
GstShmSink *self;
|
||||
|
||||
pipe = sp_writer_block_get_pipe (block);
|
||||
self = sp_get_data (pipe);
|
||||
|
||||
GST_OBJECT_LOCK (self);
|
||||
sp_writer_free_block (block);
|
||||
GST_OBJECT_UNLOCK (self);
|
||||
g_object_unref (self);
|
||||
}
|
||||
|
||||
static GstFlowReturn
|
||||
|
@ -426,8 +436,10 @@ gst_shm_sink_buffer_alloc (GstBaseSink * sink, guint64 offset, guint size,
|
|||
|
||||
GST_OBJECT_LOCK (self);
|
||||
block = sp_writer_alloc_block (self->pipe, size);
|
||||
if (block)
|
||||
if (block) {
|
||||
buf = sp_writer_block_get_buf (block);
|
||||
g_object_ref (self);
|
||||
}
|
||||
GST_OBJECT_UNLOCK (self);
|
||||
|
||||
if (block) {
|
||||
|
|
Loading…
Reference in a new issue