camerabin: don't leak requestpads

Requestpads need to be released and unreffed. Add a comment in one case where
we intentionaly don't unref.
This commit is contained in:
Stefan Kost 2009-06-25 19:23:16 +03:00
parent aaec6a730d
commit e673b099d4
2 changed files with 9 additions and 0 deletions

View file

@ -549,6 +549,7 @@ gst_camerabin_video_create_elements (GstCameraBinVideo * vid)
vid_sinkpad = gst_element_get_static_pad (vid->tee, "sink");
}
gst_ghost_pad_set_target (GST_GHOST_PAD (vid->sinkpad), vid_sinkpad);
gst_object_unref (vid_sinkpad);
/* Add queue element for video */
@ -668,6 +669,7 @@ gst_camerabin_video_create_elements (GstCameraBinVideo * vid)
/* Never let video bin eos events reach view finder */
gst_pad_add_event_probe (vid_srcpad,
G_CALLBACK (gst_camerabin_drop_eos_probe), vid);
gst_object_unref (vid_srcpad);
pad = gst_element_get_static_pad (vid->aud_src, "src");
gst_pad_add_buffer_probe (pad,
@ -702,10 +704,12 @@ gst_camerabin_video_destroy_elements (GstCameraBinVideo * vid)
/* Release tee request pads */
if (vid->tee_video_srcpad) {
gst_element_release_request_pad (vid->tee, vid->tee_video_srcpad);
gst_object_unref (vid->tee_video_srcpad);
vid->tee_video_srcpad = NULL;
}
if (vid->tee_vf_srcpad) {
gst_element_release_request_pad (vid->tee, vid->tee_vf_srcpad);
gst_object_unref (vid->tee_vf_srcpad);
vid->tee_vf_srcpad = NULL;
}

View file

@ -805,22 +805,27 @@ camerabin_destroy_elements (GstCameraBin * camera)
/* Release request pads */
if (camera->pad_view_vid) {
gst_element_release_request_pad (camera->view_in_sel, camera->pad_view_vid);
gst_object_unref (camera->pad_view_vid);
camera->pad_view_vid = NULL;
}
if (camera->pad_src_vid) {
gst_element_release_request_pad (camera->src_out_sel, camera->pad_src_vid);
gst_object_unref (camera->pad_src_vid);
camera->pad_src_vid = NULL;
}
if (camera->pad_src_img) {
gst_element_release_request_pad (camera->src_out_sel, camera->pad_src_img);
gst_object_unref (camera->pad_src_img);
camera->pad_src_img = NULL;
}
if (camera->pad_view_src) {
gst_element_release_request_pad (camera->view_in_sel, camera->pad_view_src);
/* don't unref, we have not requested it */
camera->pad_view_src = NULL;
}
if (camera->pad_src_view) {
gst_element_release_request_pad (camera->src_out_sel, camera->pad_src_view);
gst_object_unref (camera->pad_src_view);
camera->pad_src_view = NULL;
}