[gjs/cairo] [gi/arg] Only allow override for interface types



commit a232f7e126a6b3a9cbbfe0f842b49611a662b2f1
Author: Johan Dahlin <johan gnome org>
Date:   Thu Feb 18 05:18:28 2010 -0200

    [gi/arg] Only allow override for interface types
    
    It makes no sense to override basic types as they
    are already handled perfectly well by gjs itself.
    This also avoids the performance penalty since we don't have
    to check all argument types.

 gi/arg.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)
---
diff --git a/gi/arg.c b/gi/arg.c
index 626f04e..43a6d36 100644
--- a/gi/arg.c
+++ b/gi/arg.c
@@ -595,9 +595,6 @@ gjs_value_to_g_argument(JSContext      *context,
                       "Converting jsval to GArgument %s",
                       g_type_tag_to_string(type_tag));
 
-    if (gjs_arg_override_convert_to_g_argument(context, type_info, value, arg))
-        return JS_TRUE;
-
     nullable_type = FALSE;
     wrong = FALSE; /* return JS_FALSE */
     out_of_range = FALSE;
@@ -751,6 +748,9 @@ gjs_value_to_g_argument(JSContext      *context,
             GIInfoType interface_type;
             GType gtype;
 
+            if (gjs_arg_override_convert_to_g_argument(context, type_info, value, arg))
+                return JS_TRUE;
+
             interface_info = g_type_info_get_interface(type_info);
             g_assert(interface_info != NULL);
 
@@ -1304,9 +1304,6 @@ gjs_value_from_g_argument (JSContext  *context,
 
     *value_p = JSVAL_NULL;
 
-    if (gjs_arg_override_convert_from_g_argument(context, type_info, value_p, arg))
-        return JS_TRUE;
-
     switch (type_tag) {
     case GI_TYPE_TAG_VOID:
         *value_p = JSVAL_VOID; /* or JSVAL_NULL ? */
@@ -1377,6 +1374,9 @@ gjs_value_from_g_argument (JSContext  *context,
             GIInfoType interface_type;
             GType gtype;
 
+            if (gjs_arg_override_convert_from_g_argument(context, type_info, value_p, arg))
+                return JS_TRUE;
+
             interface_info = g_type_info_get_interface(type_info);
             g_assert(interface_info != NULL);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]