summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2009-06-25 19:23:16 +0300
committerStefan Kost <ensonic@users.sf.net>2009-06-25 19:34:28 +0300
commite673b099d4c8aca5f00a65199165158403025867 (patch)
tree10de1a19b09ceee71a3f5623954d5268fb1af828 /gst
parentaaec6a730d7e4680824653cde1030754d37ac107 (diff)
downloadgst-plugins-bad-e673b099d4c8aca5f00a65199165158403025867.tar.gz
gst-plugins-bad-e673b099d4c8aca5f00a65199165158403025867.tar.bz2
gst-plugins-bad-e673b099d4c8aca5f00a65199165158403025867.zip
camerabin: don't leak requestpads
Requestpads need to be released and unreffed. Add a comment in one case where we intentionaly don't unref.
Diffstat (limited to 'gst')
-rw-r--r--gst/camerabin/camerabinvideo.c4
-rw-r--r--gst/camerabin/gstcamerabin.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/gst/camerabin/camerabinvideo.c b/gst/camerabin/camerabinvideo.c
index 2569772a..965e41e1 100644
--- a/gst/camerabin/camerabinvideo.c
+++ b/gst/camerabin/camerabinvideo.c
@@ -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;
}
diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
index 0a110f50..3f879876 100644
--- a/gst/camerabin/gstcamerabin.c
+++ b/gst/camerabin/gstcamerabin.c
@@ -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;
}