mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-23 06:26:23 +00:00
GESTrackTransition: Release all pads.
Whether calling get_request_pad or get_static_pad we always end up with an extra reference. Also keep a reference on videomixer so it doesn't go away before we call _release_request_pad() on it with the proper pads to release.
This commit is contained in:
parent
575b693c66
commit
45febdebe1
1 changed files with 15 additions and 2 deletions
|
@ -184,10 +184,13 @@ ges_track_transition_dispose (GObject * object)
|
|||
self->a_bcontrol_source = NULL;
|
||||
}
|
||||
|
||||
if (self->sinka) {
|
||||
if (self->vmixer && self->sinka && self->sinkb) {
|
||||
GST_DEBUG ("releasing request pads for vmixer");
|
||||
gst_element_release_request_pad (self->vmixer, self->sinka);
|
||||
gst_element_release_request_pad (self->vmixer, self->sinkb);
|
||||
gst_object_unref (self->vmixer);
|
||||
gst_object_unref (self->sinka);
|
||||
gst_object_unref (self->sinkb);
|
||||
self->vmixer = NULL;
|
||||
self->sinka = NULL;
|
||||
self->sinkb = NULL;
|
||||
|
@ -212,6 +215,7 @@ link_element_to_mixer (GstElement * element, GstElement * mixer)
|
|||
g_assert (srcpad);
|
||||
|
||||
gst_pad_link (srcpad, sinkpad);
|
||||
gst_object_unref (srcpad);
|
||||
|
||||
return G_OBJECT (sinkpad);
|
||||
}
|
||||
|
@ -282,7 +286,7 @@ create_video_bin (GESTrackTransition * self)
|
|||
self->sinka = (GstPad *) link_element_to_mixer (iconva, mixer);
|
||||
self->sinkb = (GstPad *) link_element_to_mixer (iconvb, mixer);
|
||||
target = (GObject *) self->sinkb;
|
||||
self->vmixer = mixer;
|
||||
self->vmixer = gst_object_ref (mixer);
|
||||
propname = "alpha";
|
||||
self->vstart_value = 0.0;
|
||||
self->vend_value = 1.0;
|
||||
|
@ -302,6 +306,10 @@ create_video_bin (GESTrackTransition * self)
|
|||
gst_element_add_pad (topbin, sinka);
|
||||
gst_element_add_pad (topbin, sinkb);
|
||||
|
||||
gst_object_unref (sinka_target);
|
||||
gst_object_unref (sinkb_target);
|
||||
gst_object_unref (src_target);
|
||||
|
||||
/* set up interpolation */
|
||||
|
||||
g_object_set (target, propname, (gfloat) 0.0, NULL);
|
||||
|
@ -369,6 +377,11 @@ create_audio_bin (GESTrackTransition * self)
|
|||
|
||||
/* set up interpolation */
|
||||
|
||||
gst_object_unref (sinka_target);
|
||||
gst_object_unref (sinkb_target);
|
||||
gst_object_unref (src_target);
|
||||
|
||||
|
||||
//g_object_set(atarget, propname, (gdouble) 0, NULL);
|
||||
//g_object_set(btarget, propname, (gdouble) 0, NULL);
|
||||
|
||||
|
|
Loading…
Reference in a new issue