frei0r: Set the default property values correctly
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 27 Jun 2009 07:51:01 +0000 (09:51 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 27 Jun 2009 07:52:22 +0000 (09:52 +0200)
gst/frei0r/gstfrei0r.c

index 0f7ba5c..3cfc939 100644 (file)
@@ -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);