basesrc: ensure submitted buffer list is writable
authorTim-Philipp Müller <tim@centricular.com>
Wed, 19 Dec 2018 00:34:40 +0000 (00:34 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 19 Dec 2018 00:34:40 +0000 (00:34 +0000)
Fixes flaky appsrc unit test where depending on scheduling
the submitted list might not be writable if submitted via
an action signal from the application thread.

Fixes gst-plugins-base#522

libs/gst/base/gstbasesrc.c

index fd46bd5..efe52e7 100644 (file)
@@ -4036,7 +4036,8 @@ gst_base_src_submit_buffer_list (GstBaseSrc * src, GstBufferList * buffer_list)
   g_return_if_fail (GST_IS_BUFFER_LIST (buffer_list));
   g_return_if_fail (BASE_SRC_HAS_PENDING_BUFFER_LIST (src) == FALSE);
 
-  src->priv->pending_bufferlist = buffer_list;
+  /* we need it to be writable later in get_range() where we use get_writable */
+  src->priv->pending_bufferlist = gst_buffer_list_make_writable (buffer_list);
 
   GST_LOG_OBJECT (src, "%u buffers submitted in buffer list",
       gst_buffer_list_length (buffer_list));