use gtype to get the enum value for the nick
authorBrandon Lewis <brandon@collabora.co.uk>
Thu, 8 Jul 2010 13:54:27 +0000 (15:54 +0200)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Fri, 9 Jul 2010 11:21:18 +0000 (13:21 +0200)
ges/ges-timeline-transition.c

index b63e59f..fb57264 100644 (file)
@@ -200,11 +200,19 @@ GESTimelineTransition *
 ges_timeline_transition_new_for_nick (gchar * nick)
 {
   GEnumValue *value;
+  GEnumClass *klass;
+  GESTimelineTransition *ret = NULL;
 
-  for (value = &transition_types[0]; value->value_name; value++)
-    if (!strcmp (nick, value->value_nick))
-      return g_object_new (GES_TYPE_TIMELINE_TRANSITION, "vtype",
-          (gint) value->value, NULL);
+  klass = G_ENUM_CLASS (g_type_class_ref (GES_VIDEO_TRANSITION_TYPE_TYPE));
+  if (!klass)
+    return NULL;
+
+  value = g_enum_get_value_by_nick (klass, nick);
+  if (value) {
+    ret = g_object_new (GES_TYPE_TIMELINE_TRANSITION, "vtype",
+        (gint) value->value, NULL);
+  }
 
-  return NULL;
+  g_type_class_unref (klass);
+  return ret;
 }