Added a utility function in gstutils to set an object argument as a string. gstparse...
authorWim Taymans <wim.taymans@gmail.com>
Sat, 3 Mar 2001 16:30:10 +0000 (16:30 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Sat, 3 Mar 2001 16:30:10 +0000 (16:30 +0000)
Original commit message from CVS:
Added a utility function in gstutils to set an object argument as a
string. gstparse.c and gstelement.c now use this function.

gst/gstelement.c
gst/gstparse.c
gst/gstutils.h

index 84168a4..2193d9b 100644 (file)
@@ -972,78 +972,8 @@ gst_element_load_thyself (xmlNodePtr self, GstObject *parent)
        }
         child = child->next;
       }
-      if (name && value) {
-        GtkType type = GTK_OBJECT_TYPE (element);
-       GtkArgInfo *info;
-       gchar *result;
 
-       result = gtk_object_arg_get_info (type, name, &info);
-
-       if (result) {
-          g_print("gstelement: %s\n", result);
-       }
-       else if (info->arg_flags & GTK_ARG_WRITABLE) {
-          switch (info->type) {
-            case GTK_TYPE_STRING:
-              gtk_object_set (GTK_OBJECT (element), name, value, NULL);
-             break;
-            case GTK_TYPE_INT: {
-             gint i;
-             sscanf (value, "%d", &i);
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            case GTK_TYPE_LONG: {
-             glong i;
-             sscanf (value, "%ld", &i);
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            case GTK_TYPE_ULONG: {
-             gulong i;
-             sscanf (value, "%lu", &i);
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            case GTK_TYPE_BOOL: {
-             gboolean i = FALSE;
-             if (!strcmp ("true", value)) i = TRUE;
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            case GTK_TYPE_CHAR: {
-             gchar i;
-             sscanf (value, "%c", &i);
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            case GTK_TYPE_UCHAR: {
-             guchar i;
-             sscanf (value, "%c", &i);
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            case GTK_TYPE_FLOAT: {
-             gfloat i;
-             sscanf (value, "%f", &i);
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            case GTK_TYPE_DOUBLE: {
-             gdouble i;
-             sscanf (value, "%g", (float *)&i);
-              gtk_object_set (GTK_OBJECT (element), name, i, NULL);
-             break;
-           }
-            default:
-             if (info->type == GST_TYPE_FILENAME) {
-                gtk_object_set (GTK_OBJECT (element), name, value, NULL);
-             }
-             break;
-         }
-
-       }
-      }
+      gst_util_set_object_arg (GTK_OBJECT (element), name, value);
     }
     children = children->next;
   }
index 11c51a2..16091dc 100644 (file)
@@ -30,6 +30,7 @@
 #include "gstparse.h"
 #include "gstpipeline.h"
 #include "gstthread.h"
+#include "gstutils.h"
 
 typedef struct _gst_parse_priv gst_parse_priv;
 struct _gst_parse_priv {
@@ -180,7 +181,8 @@ if (GST_IS_GHOST_PAD(srcpad)) GST_DEBUG(0,"it's a ghost pad\n");
       argval = pos+1;
       DEBUG("attempting to set argument '%s' to '%s' on element '%s'\n",
             argname,argval,GST_ELEMENT_NAME(previous));
-      gtk_object_set(GTK_OBJECT(previous),argname,argval,NULL);
+      //gtk_object_set(GTK_OBJECT(previous),argname,argval,NULL);
+      gst_util_set_object_arg (GTK_OBJECT(previous), argname, argval);
       g_free(argname);
 
     // element or argument, or beginning of bin or thread
index 3f15ed2..b57f866 100644 (file)
@@ -39,6 +39,8 @@ guchar*               gst_util_get_string_arg         (GtkObject *object, guchar *argname);
 gpointer       gst_util_get_pointer_arg        (GtkObject *object, guchar *argname);
 GtkWidget*     gst_util_get_widget_arg         (GtkObject *object, guchar *argname);
 
+void           gst_util_set_object_arg         (GtkObject *object, guchar *name, gchar *value);
+       
 void           gst_util_dump_mem               (guchar *mem, guint size);
 
 #ifdef __cplusplus