wpesrc: Don't crash if WPE doesn't generate a buffer.

On creating a 2nd wpesrc in a new pipeline in an app that already
has a runnig wpesrc, WPE sometimes doesn't return a buffer on request,
leading to a crash. This commit fixes the crash, but not the underlying
failure - a 2nd wpesrc can still error out instead.

Partially fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1386

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1568>
This commit is contained in:
Jan Schmidt 2020-08-25 01:57:55 +10:00 committed by GStreamer Merge Bot
parent c3659cd611
commit 6fc7455881

View file

@ -169,11 +169,13 @@ gst_wpe_src_create (GstBaseSrc * bsrc, guint64 offset, guint length, GstBuffer *
} }
locked_buffer = src->view->buffer (); locked_buffer = src->view->buffer ();
if (locked_buffer == NULL) {
if (locked_buffer != NULL) { GST_OBJECT_UNLOCK (src);
*buf = gst_buffer_copy_deep (locked_buffer); GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
ret = GST_FLOW_OK; ("WPE View did not render a buffer"), (NULL));
return ret;
} }
*buf = gst_buffer_copy_deep (locked_buffer);
g_object_get(gl_src, "timestamp-offset", &ts_offset, NULL); g_object_get(gl_src, "timestamp-offset", &ts_offset, NULL);
@ -195,6 +197,7 @@ gst_wpe_src_create (GstBaseSrc * bsrc, guint64 offset, guint length, GstBuffer *
gl_src->running_time = next_time; gl_src->running_time = next_time;
ret = GST_FLOW_OK;
GST_OBJECT_UNLOCK (src); GST_OBJECT_UNLOCK (src);
return ret; return ret;
} }