[pygobject/invoke-rewrite] [gi] fix container object reffing



commit 99d6e6c8d806e6f9e48c3c2380024fb3511d110a
Author: John (J5) Palmieri <johnp redhat com>
Date:   Wed Feb 2 19:27:40 2011 -0500

    [gi] fix container object reffing

 gi/pygi-argument.c |    7 +++----
 gi/pygi-cache.c    |   12 ++++--------
 2 files changed, 7 insertions(+), 12 deletions(-)
---
diff --git a/gi/pygi-argument.c b/gi/pygi-argument.c
index e69acf4..fa744f3 100644
--- a/gi/pygi-argument.c
+++ b/gi/pygi-argument.c
@@ -3240,9 +3240,9 @@ _pygi_marshal_in_interface_object (PyGIInvokeState   *state,
         return FALSE;
     }
 
-    arg->v_pointer = pygobject_get (py_arg);
+    arg->v_pointer = pygobject_get(py_arg);
     if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
-        g_object_ref (arg->v_pointer);
+        g_object_ref(arg->v_pointer);
 
     return TRUE;
 }
@@ -3895,10 +3895,9 @@ _pygi_marshal_out_interface_object (PyGIInvokeState   *state,
 {
     PyObject *py_obj = pygobject_new (arg->v_pointer);
 
-    /* The new wrapper increased the reference count, so decrease it. */
     if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
         g_object_unref (arg->v_pointer);
-
+    
     return py_obj;
 }
 
diff --git a/gi/pygi-cache.c b/gi/pygi-cache.c
index 58b5530..cbc54f4 100644
--- a/gi/pygi-cache.c
+++ b/gi/pygi-cache.c
@@ -181,10 +181,8 @@ _sequence_cache_new_from_type_info(GITypeInfo *type_info,
     item_type_info = g_type_info_get_param_type (type_info, 0);
     item_type_tag = g_type_info_get_tag (item_type_info);
 
-    item_transfer = GI_TRANSFER_NOTHING;
-    if (transfer == GI_TRANSFER_EVERYTHING ||
-        transfer == GI_TRANSFER_CONTAINER)
-        item_transfer = GI_TRANSFER_EVERYTHING;
+    item_transfer =
+        transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
 
     sc->item_cache = _arg_cache_new_from_type_info(item_type_info,
                                                    NULL,
@@ -225,10 +223,8 @@ _hash_cache_new_from_type_info(GITypeInfo *type_info,
     value_type_info = g_type_info_get_param_type (type_info, 1);
     value_type_tag = g_type_info_get_tag (value_type_info);
 
-    item_transfer = GI_TRANSFER_NOTHING;
-    if (transfer == GI_TRANSFER_EVERYTHING ||
-        transfer == GI_TRANSFER_CONTAINER)
-        item_transfer = GI_TRANSFER_EVERYTHING;
+    item_transfer =
+        transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
 
     hc->key_cache = _arg_cache_new_from_type_info(key_type_info,
                                                   NULL,



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