[pygobject/gsoc2009: 74/160] Move code to avoid useless allocations
- From: Simon van der Linden <svdlinden src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [pygobject/gsoc2009: 74/160] Move code to avoid useless allocations
- Date: Fri, 14 Aug 2009 21:28:18 +0000 (UTC)
commit 286bac2456d7334abd884d75e8705f8d300598fb
Author: Simon van der Linden <svdlinden src gnome org>
Date: Wed Jul 29 11:32:00 2009 +0200
Move code to avoid useless allocations
gi/pygargument.c | 24 +++++++++++++-----------
1 files changed, 13 insertions(+), 11 deletions(-)
---
diff --git a/gi/pygargument.c b/gi/pygargument.c
index 75749f3..9fae773 100644
--- a/gi/pygargument.c
+++ b/gi/pygargument.c
@@ -1415,18 +1415,18 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
case GI_TYPE_TAG_ARRAY:
{
GArray *array;
- GITypeInfo *item_type_info;
gsize i;
array = arg->v_pointer;
- item_type_info = g_type_info_get_param_type(type_info, 0);
- g_assert(item_type_info != NULL);
-
if ((direction == GI_DIRECTION_IN && transfer != GI_TRANSFER_EVERYTHING)
|| (direction == GI_DIRECTION_OUT && transfer == GI_TRANSFER_EVERYTHING)) {
+ GITypeInfo *item_type_info;
GITransfer item_transfer;
+ item_type_info = g_type_info_get_param_type(type_info, 0);
+ g_assert(item_type_info != NULL);
+
if (direction == GI_DIRECTION_IN) {
item_transfer = GI_TRANSFER_NOTHING;
} else {
@@ -1439,6 +1439,8 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
item = _g_array_index(array, GArgument, i);
pygi_g_argument_release(&item, item_type_info, item_transfer, direction);
}
+
+ g_base_info_unref((GIBaseInfo *)item_type_info);
}
if ((direction == GI_DIRECTION_IN && transfer == GI_TRANSFER_NOTHING)
@@ -1446,7 +1448,6 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
g_array_free(array, TRUE);
}
- g_base_info_unref((GIBaseInfo *)item_type_info);
break;
}
case GI_TYPE_TAG_INTERFACE:
@@ -1456,17 +1457,17 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
case GI_TYPE_TAG_GSLIST:
{
GSList *list;
- GITypeInfo *item_type_info;
list = arg->v_pointer;
- item_type_info = g_type_info_get_param_type(type_info, 0);
- g_assert(item_type_info != NULL);
-
if ((direction == GI_DIRECTION_IN && transfer != GI_TRANSFER_EVERYTHING)
|| (direction == GI_DIRECTION_OUT && transfer == GI_TRANSFER_EVERYTHING)) {
- GSList *item;
+ GITypeInfo *item_type_info;
GITransfer item_transfer;
+ GSList *item;
+
+ item_type_info = g_type_info_get_param_type(type_info, 0);
+ g_assert(item_type_info != NULL);
if (direction == GI_DIRECTION_IN) {
item_transfer = GI_TRANSFER_NOTHING;
@@ -1479,6 +1480,8 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
pygi_g_argument_release((GArgument *)&item->data, item_type_info,
item_transfer, direction);
}
+
+ g_base_info_unref((GIBaseInfo *)item_type_info);
}
if ((direction == GI_DIRECTION_IN && transfer == GI_TRANSFER_NOTHING)
@@ -1491,7 +1494,6 @@ pygi_g_argument_release(GArgument *arg, GITypeInfo *type_info, GITransfer transf
}
}
- g_base_info_unref((GIBaseInfo *)item_type_info);
break;
}
case GI_TYPE_TAG_GHASH:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]