mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-04 09:42:19 +00:00
gl: fix a few other leaks when not getting to PAUSED
This commit is contained in:
parent
86aa568383
commit
4e13980e10
2 changed files with 40 additions and 0 deletions
|
@ -54,6 +54,10 @@ gst_gl_upload_element_prepare_output_buffer (GstBaseTransform * bt,
|
|||
static GstFlowReturn gst_gl_upload_element_transform (GstBaseTransform * bt,
|
||||
GstBuffer * buffer, GstBuffer * outbuf);
|
||||
static gboolean gst_gl_upload_element_stop (GstBaseTransform * bt);
|
||||
static GstStateChangeReturn
|
||||
gst_gl_upload_element_change_state (GstElement * element,
|
||||
GstStateChange transition);
|
||||
|
||||
|
||||
static GstStaticPadTemplate gst_gl_upload_element_src_pad_template =
|
||||
GST_STATIC_PAD_TEMPLATE ("src",
|
||||
|
@ -93,6 +97,8 @@ gst_gl_upload_element_class_init (GstGLUploadElementClass * klass)
|
|||
|
||||
bt_class->passthrough_on_same_caps = TRUE;
|
||||
|
||||
element_class->change_state = gst_gl_upload_element_change_state;
|
||||
|
||||
gst_element_class_add_static_pad_template (element_class,
|
||||
&gst_gl_upload_element_src_pad_template);
|
||||
|
||||
|
@ -273,3 +279,32 @@ gst_gl_upload_element_transform (GstBaseTransform * bt, GstBuffer * buffer,
|
|||
{
|
||||
return GST_FLOW_OK;
|
||||
}
|
||||
|
||||
static GstStateChangeReturn
|
||||
gst_gl_upload_element_change_state (GstElement * element,
|
||||
GstStateChange transition)
|
||||
{
|
||||
GstGLUploadElement *upload = GST_GL_UPLOAD_ELEMENT (element);
|
||||
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
|
||||
|
||||
GST_DEBUG_OBJECT (upload, "changing state: %s => %s",
|
||||
gst_element_state_get_name (GST_STATE_TRANSITION_CURRENT (transition)),
|
||||
gst_element_state_get_name (GST_STATE_TRANSITION_NEXT (transition)));
|
||||
|
||||
ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
|
||||
if (ret == GST_STATE_CHANGE_FAILURE)
|
||||
return ret;
|
||||
|
||||
switch (transition) {
|
||||
case GST_STATE_CHANGE_READY_TO_NULL:
|
||||
if (upload->upload) {
|
||||
gst_object_unref (upload->upload);
|
||||
upload->upload = NULL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -398,6 +398,11 @@ gst_gl_base_filter_change_state (GstElement * element,
|
|||
gst_object_unref (filter->display);
|
||||
filter->display = NULL;
|
||||
}
|
||||
|
||||
if (filter->context) {
|
||||
gst_object_unref (filter->context);
|
||||
filter->context = NULL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue