summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-12-16 10:51:38 -0300
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-12-23 13:20:36 -0300
commit706740845b8fc8be037e302f82a76fad8cb5bfe4 (patch)
treef9bc7816fe63147b7971c2bc44883ef9d704bcc8 /gst
parent5ce8d0356dc886e1f493c2e4da7b6909288a1054 (diff)
downloadgstreamer-plugins-bad-706740845b8fc8be037e302f82a76fad8cb5bfe4.tar.gz
viewfinderbin: Fix video-sink property again
Avoid switching the element on the set_property function, instead wait for the next NULL -> READY transition.
Diffstat (limited to 'gst')
-rw-r--r--gst/camerabin2/gstviewfinderbin.c31
1 files changed, 6 insertions, 25 deletions
diff --git a/gst/camerabin2/gstviewfinderbin.c b/gst/camerabin2/gstviewfinderbin.c
index b10d1fab1..c820c0458 100644
--- a/gst/camerabin2/gstviewfinderbin.c
+++ b/gst/camerabin2/gstviewfinderbin.c
@@ -231,33 +231,14 @@ gst_viewfinder_bin_set_video_sink (GstViewfinderBin * vfbin, GstElement * sink)
{
GST_INFO_OBJECT (vfbin, "Setting video sink to %" GST_PTR_FORMAT, sink);
- if (vfbin->video_sink != sink) {
- if (sink)
- gst_object_ref_sink (sink);
-
- if (vfbin->video_sink) {
- gst_bin_remove (GST_BIN_CAST (vfbin), vfbin->video_sink);
- gst_object_unref (vfbin->video_sink);
- }
-
- vfbin->video_sink = sink;
- if (sink) {
- gst_bin_add (GST_BIN_CAST (vfbin), gst_object_ref (sink));
- if (vfbin->elements_created) {
- GstElement *videoscale = gst_bin_get_by_name (GST_BIN_CAST (vfbin),
- "vfbin-videoscale");
-
- g_assert (videoscale != NULL);
-
- if (!gst_element_link_pads (videoscale, "src", sink, "sink")) {
- GST_WARNING_OBJECT (vfbin, "Failed to link the new sink");
- }
- }
+ if (vfbin->user_video_sink != sink) {
+ if (vfbin->user_video_sink) {
+ gst_object_unref (vfbin->user_video_sink);
}
-
+ vfbin->user_video_sink = sink;
+ if (sink)
+ gst_object_ref (sink);
}
-
- GST_LOG_OBJECT (vfbin, "Video sink is now %" GST_PTR_FORMAT, sink);
}
static void