wpesrc: fix some caps leaks using the non-GL output

Always chain up to the parent _stop() implementation as it unrefs some
caps (among other things).

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1409
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1618>
This commit is contained in:
Matthew Waters 2020-09-29 23:46:00 +10:00 committed by GStreamer Merge Bot
parent f7a8ece5ef
commit b003387526

View file

@ -330,15 +330,20 @@ gst_wpe_src_stop (GstBaseSrc * base_src)
{ {
GstWpeSrc *src = GST_WPE_SRC (base_src); GstWpeSrc *src = GST_WPE_SRC (base_src);
/* we can call this always, GstGLBaseSrc is smart enough to not crash if
* gst_gl_base_src_gl_start() has not been called from chaining up
* gst_wpe_src_decide_allocation() */
if (!GST_CALL_PARENT_WITH_DEFAULT(GST_BASE_SRC_CLASS, stop, (base_src), FALSE))
return FALSE;
GST_OBJECT_LOCK (src); GST_OBJECT_LOCK (src);
if (src->gl_enabled) { /* if gl-enabled, gst_wpe_src_stop_unlocked() would have already been called
GST_OBJECT_UNLOCK (src); * inside gst_wpe_src_gl_stop() from the base class stopping the OpenGL
// Let glbasesrc call our gl_stop() within its GL context. * context */
return GST_CALL_PARENT_WITH_DEFAULT(GST_BASE_SRC_CLASS, stop, (base_src), FALSE); if (!src->gl_enabled)
}
gst_wpe_src_stop_unlocked (src); gst_wpe_src_stop_unlocked (src);
GST_OBJECT_UNLOCK (src); GST_OBJECT_UNLOCK (src);
return TRUE; return TRUE;
} }