From: Tommi Myöhänen Date: Thu, 27 Aug 2009 11:35:26 +0000 (+0300) Subject: camerabin: handle preview-caps only in image mode and only when they change X-Git-Tag: 1.19.3~507^2~18011 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0d48f7353286e06a18fbf1965829ee18fceeabd0;p=platform%2Fupstream%2Fgstreamer.git camerabin: handle preview-caps only in image mode and only when they change This prevents camerabin to create preview pipeline every time when application re-sets the same caps again. --- diff --git a/gst/camerabin/gstcamerabin.c b/gst/camerabin/gstcamerabin.c index 6d02850..40ba837 100644 --- a/gst/camerabin/gstcamerabin.c +++ b/gst/camerabin/gstcamerabin.c @@ -2891,11 +2891,23 @@ gst_camerabin_set_property (GObject * object, guint prop_id, } break; case ARG_PREVIEW_CAPS: - GST_OBJECT_LOCK (camera); - gst_caps_replace (&camera->preview_caps, - (GstCaps *) gst_value_get_caps (value)); - GST_OBJECT_UNLOCK (camera); - gst_camerabin_preview_create_pipeline (camera); + /* Currently camerabin only provides preview for images, so we don't + * even handle video mode */ + if (camera->mode == MODE_IMAGE) { + GstCaps *new_caps = NULL; + + new_caps = (GstCaps *) gst_value_get_caps (value); + GST_DEBUG_OBJECT (camera, + "setting preview caps: %" GST_PTR_FORMAT " -> %" GST_PTR_FORMAT, + camera->preview_caps, new_caps); + + if (!gst_caps_is_equal (camera->preview_caps, new_caps)) { + GST_OBJECT_LOCK (camera); + gst_caps_replace (&camera->preview_caps, new_caps); + GST_OBJECT_UNLOCK (camera); + gst_camerabin_preview_create_pipeline (camera); + } + } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);