mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-06 10:42:22 +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,
|
static GstFlowReturn gst_gl_upload_element_transform (GstBaseTransform * bt,
|
||||||
GstBuffer * buffer, GstBuffer * outbuf);
|
GstBuffer * buffer, GstBuffer * outbuf);
|
||||||
static gboolean gst_gl_upload_element_stop (GstBaseTransform * bt);
|
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 =
|
static GstStaticPadTemplate gst_gl_upload_element_src_pad_template =
|
||||||
GST_STATIC_PAD_TEMPLATE ("src",
|
GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
|
@ -93,6 +97,8 @@ gst_gl_upload_element_class_init (GstGLUploadElementClass * klass)
|
||||||
|
|
||||||
bt_class->passthrough_on_same_caps = TRUE;
|
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_element_class_add_static_pad_template (element_class,
|
||||||
&gst_gl_upload_element_src_pad_template);
|
&gst_gl_upload_element_src_pad_template);
|
||||||
|
|
||||||
|
@ -273,3 +279,32 @@ gst_gl_upload_element_transform (GstBaseTransform * bt, GstBuffer * buffer,
|
||||||
{
|
{
|
||||||
return GST_FLOW_OK;
|
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);
|
gst_object_unref (filter->display);
|
||||||
filter->display = NULL;
|
filter->display = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (filter->context) {
|
||||||
|
gst_object_unref (filter->context);
|
||||||
|
filter->context = NULL;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue