[cheese/three-point-oh] Performance fix for effect selection



commit f31eeabe0069342a917c149b5e5d0eb8605884a1
Author: Yuvaraj Pandian T <yuvipanda gmail com>
Date:   Sat Jul 10 17:07:26 2010 +0530

    Performance fix for effect selection

 libcheese/cheese-camera.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
index 2296092..48fc67d 100644
--- a/libcheese/cheese-camera.c
+++ b/libcheese/cheese-camera.c
@@ -730,25 +730,27 @@ static void
 cheese_camera_change_effect_filter (CheeseCamera *camera, GstElement *new_filter)
 {
   CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
-
-  gboolean is_playing = priv->pipeline_is_playing;
   gboolean ok;
 
-  cheese_camera_stop (camera);
-
+  g_object_set (G_OBJECT (priv->main_valve), "drop", TRUE, NULL);
+  
   gst_element_unlink_many (priv->main_valve, priv->effect_filter,
                            priv->csp_post_effect, NULL);
 
+  g_object_ref(priv->effect_filter);
   gst_bin_remove (GST_BIN (priv->video_display_bin), priv->effect_filter);
+  priv->effect_filter = NULL;
+  g_object_unref(priv->effect_filter);
 
   gst_bin_add (GST_BIN (priv->video_display_bin), new_filter);
   ok = gst_element_link_many (priv->main_valve, new_filter,
                               priv->csp_post_effect, NULL);
-  g_return_if_fail (ok);
+  gst_element_set_state (new_filter, GST_STATE_PAUSED);
 
-  if (is_playing)
-    cheese_camera_play (camera);
+  g_return_if_fail (ok);
 
+  g_object_set (G_OBJECT (priv->main_valve), "drop", FALSE, NULL);
+  
   priv->effect_filter = new_filter;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]