summaryrefslogtreecommitdiff
path: root/gst/camerabin
diff options
context:
space:
mode:
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-04-19 19:04:24 -0300
committerThiago Santos <thiago.sousa.santos@collabora.co.uk>2010-04-19 19:06:39 -0300
commitc4aaab2d590a10a7cfe826742406c85c00d858c6 (patch)
tree6b9c77e6b27d6b619158c71f5bbc511e03608f33 /gst/camerabin
parentbf586d796692d0e2be5b6e601cce8d0c7346695d (diff)
downloadgstreamer-plugins-bad-c4aaab2d590a10a7cfe826742406c85c00d858c6.tar.gz
camerabin: Avoid crashing when setting zoom in NULL
Avoid setting zoom in NULL state because the source is not set yet and this leads to a crash. It is set on READY > PAUSED anyway.
Diffstat (limited to 'gst/camerabin')
-rw-r--r--gst/camerabin/gstcamerabin.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c
index f880793b2..53c410757 100644
--- a/gst/camerabin/gstcamerabin.c
+++ b/gst/camerabin/gstcamerabin.c
@@ -552,6 +552,7 @@ camerabin_setup_src_elements (GstCameraBin * camera)
gst_caps_unref (new_caps);
/* Set caps for view finder mode */
+ /* This also sets zoom */
gst_camerabin_set_capsfilter_caps (camera, camera->view_finder_caps);
}
@@ -736,7 +737,7 @@ camerabin_create_elements (GstCameraBin * camera)
GstPadLinkReturn link_ret = GST_PAD_LINK_REFUSED;
GstPad *unconnected_pad;
- GST_LOG_OBJECT (camera, "creating elems");
+ GST_LOG_OBJECT (camera, "creating elements");
/* Create "src" elements */
if (!camerabin_create_src_elements (camera)) {
@@ -1052,6 +1053,7 @@ static gboolean
gst_camerabin_set_videosrc_zoom (GstCameraBin * camera, gint zoom)
{
gboolean ret = FALSE;
+
if (g_object_class_find_property (G_OBJECT_GET_CLASS (camera->src_vid_src),
"zoom")) {
g_object_set (G_OBJECT (camera->src_vid_src), "zoom",
@@ -3231,7 +3233,9 @@ gst_camerabin_set_property (GObject * object, guint prop_id,
break;
case ARG_ZOOM:
g_atomic_int_set (&camera->zoom, g_value_get_int (value));
- gst_camerabin_setup_zoom (camera);
+ /* does not set it if in NULL, the src is not created yet */
+ if (GST_STATE (camera) != GST_STATE_NULL)
+ gst_camerabin_setup_zoom (camera);
break;
case ARG_MODE:
gst_camerabin_change_mode (camera, g_value_get_enum (value));