[gst-cvs] gst-plugins-bad: frei0r: Set the default property values correctly

Sebastian Dröge slomo at kemper.freedesktop.org
Sat Jun 27 00:52:37 PDT 2009


Module: gst-plugins-bad
Branch: master
Commit: cd6422a37272bfd47ce24c9762e4edb1b7b5e682
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=cd6422a37272bfd47ce24c9762e4edb1b7b5e682

Author: Sebastian Dröge <sebastian.droege at collabora.co.uk>
Date:   Sat Jun 27 09:51:01 2009 +0200

frei0r: Set the default property values correctly

---

 gst/frei0r/gstfrei0r.c |   47 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/gst/frei0r/gstfrei0r.c b/gst/frei0r/gstfrei0r.c
index 0f7ba5c..3cfc939 100644
--- a/gst/frei0r/gstfrei0r.c
+++ b/gst/frei0r/gstfrei0r.c
@@ -86,51 +86,71 @@ gst_frei0r_klass_install_properties (GObjectClass * gobject_class,
       case F0R_PARAM_BOOL:
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_boolean (prop_name, param_info->name,
-                param_info->explanation, FALSE,
+                param_info->explanation, properties[i].default_value.data.b,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         properties[i].n_prop_ids = 1;
         break;
-      case F0R_PARAM_DOUBLE:
+      case F0R_PARAM_DOUBLE:{
+        gdouble def = properties[i].default_value.data.d;
+
+        /* If the default is NAN, +-INF we use 0.0 */
+        if (!(def <= G_MAXDOUBLE && def >= -G_MAXDOUBLE))
+          def = 0.0;
+
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_double (prop_name, param_info->name,
-                param_info->explanation, -G_MAXDOUBLE, G_MAXDOUBLE, 0.0,
+                param_info->explanation, -G_MAXDOUBLE, G_MAXDOUBLE, def,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         properties[i].n_prop_ids = 1;
         break;
+      }
       case F0R_PARAM_STRING:
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_string (prop_name, param_info->name,
-                param_info->explanation, NULL,
+                param_info->explanation, properties[i].default_value.data.s,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         properties[i].n_prop_ids = 1;
         break;
       case F0R_PARAM_COLOR:{
         gchar *prop_name_full;
         gchar *prop_nick_full;
+        gdouble def;
 
+        def = properties[i].default_value.data.color.r;
+        /* If the default is out of range we use 0.0 */
+        if (!(def <= 1.0 && def >= 0.0))
+          def = 0.0;
         prop_name_full = g_strconcat (prop_name, "-r", NULL);
         prop_nick_full = g_strconcat (param_info->name, "-R", NULL);
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_float (prop_name_full, prop_nick_full,
-                param_info->explanation, 0.0, 1.0, 0.0,
+                param_info->explanation, 0.0, 1.0, def,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         g_free (prop_name_full);
         g_free (prop_nick_full);
 
+        def = properties[i].default_value.data.color.g;
+        /* If the default is out of range we use 0.0 */
+        if (!(def <= 1.0 && def >= 0.0))
+          def = 0.0;
         prop_name_full = g_strconcat (prop_name, "-g", NULL);
         prop_nick_full = g_strconcat (param_info->name, "-G", NULL);
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_float (prop_name_full, param_info->name,
-                param_info->explanation, 0.0, 1.0, 0.0,
+                param_info->explanation, 0.0, 1.0, def,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         g_free (prop_name_full);
         g_free (prop_nick_full);
 
+        def = properties[i].default_value.data.color.b;
+        /* If the default is out of range we use 0.0 */
+        if (!(def <= 1.0 && def >= 0.0))
+          def = 0.0;
         prop_name_full = g_strconcat (prop_name, "-b", NULL);
         prop_nick_full = g_strconcat (param_info->name, "-B", NULL);
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_float (prop_name_full, param_info->name,
-                param_info->explanation, 0.0, 1.0, 0.0,
+                param_info->explanation, 0.0, 1.0, def,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         g_free (prop_name_full);
         g_free (prop_nick_full);
@@ -141,21 +161,30 @@ gst_frei0r_klass_install_properties (GObjectClass * gobject_class,
       case F0R_PARAM_POSITION:{
         gchar *prop_name_full;
         gchar *prop_nick_full;
+        gdouble def;
 
+        def = properties[i].default_value.data.position.x;
+        /* If the default is out of range we use 0.0 */
+        if (!(def <= 1.0 && def >= 0.0))
+          def = 0.0;
         prop_name_full = g_strconcat (prop_name, "-x", NULL);
         prop_nick_full = g_strconcat (param_info->name, "-X", NULL);
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_double (prop_name_full, param_info->name,
-                param_info->explanation, 0.0, 1.0, 0.0,
+                param_info->explanation, 0.0, 1.0, def,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         g_free (prop_name_full);
         g_free (prop_nick_full);
 
+        def = properties[i].default_value.data.position.y;
+        /* If the default is out of range we use 0.0 */
+        if (!(def <= 1.0 && def >= 0.0))
+          def = 0.0;
         prop_name_full = g_strconcat (prop_name, "-Y", NULL);
         prop_nick_full = g_strconcat (param_info->name, "-X", NULL);
         g_object_class_install_property (gobject_class, count++,
             g_param_spec_double (prop_name_full, param_info->name,
-                param_info->explanation, 0.0, 1.0, 0.0,
+                param_info->explanation, 0.0, 1.0, def,
                 G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE));
         g_free (prop_name_full);
         g_free (prop_nick_full);





More information about the Gstreamer-commits mailing list