gclosure: add missing fundamental types to generic marshaler
authorXan Lopez <xlopez@igalia.com>
Thu, 9 Jun 2011 21:50:22 +0000 (23:50 +0200)
committerXan Lopez <xlopez@igalia.com>
Tue, 14 Jun 2011 10:50:51 +0000 (12:50 +0200)
for GObject type the ffi->gvalue conversion was not handled. The
GFlags type was completely missing.

gobject/gclosure.c

index 0121fd9943d1ac4803446bf52bb45885f4a69a4c..42f8f8bdd8081485b9e4dbe4f1670a38b27052cd 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "gclosure.h"
 #include "gboxed.h"
+#include "genums.h"
 #include "gvalue.h"
 #include "gvaluetypes.h"
 
@@ -957,6 +958,7 @@ value_to_ffi_type (const GValue *gvalue, gpointer *value)
       break;
     case G_TYPE_UCHAR:
     case G_TYPE_UINT:
+    case G_TYPE_FLAGS:
       rettype = &ffi_type_uint;
       *value = (gpointer)&(gvalue->data[0].v_uint);
       break;
@@ -1049,6 +1051,12 @@ value_from_ffi_type (GValue *gvalue, gpointer *value)
     case G_TYPE_BOXED:
       g_value_set_boxed (gvalue, *(gpointer*)value);
       break;
+    case G_TYPE_FLAGS:
+      g_value_set_flags (gvalue, *(guint*)value);
+      break;
+    case G_TYPE_OBJECT:
+      g_value_set_object (gvalue, *(gpointer*)value);
+      break;
     default:
       g_warning ("value_from_ffi_type: Unsupported fundamental type: %s",
                 g_type_name (g_type_fundamental (G_VALUE_TYPE (gvalue))));