summaryrefslogtreecommitdiff
path: root/gi/pygi-cache.h
diff options
context:
space:
mode:
authorMathieu Duponchelle <mathieu@centricular.com>2018-02-15 23:32:20 +0100
committerMathieu Duponchelle <mathieu@centricular.com>2018-02-16 17:56:16 +0100
commitb1d1c8d9d8820fe405bddd8e9dea88b5ec2fcce2 (patch)
treec6004b09bea7cba115790ebf888f5442d4175850 /gi/pygi-cache.h
parent26b7fc3fee55870cc944b0f718da8a75c75f4eae (diff)
downloadpygobject-b1d1c8d9d8820fe405bddd8e9dea88b5ec2fcce2.tar.gz
Revert "Revert "to python marshalling: collect cleanup data""
This reverts commit fa555767464fbe551b14cfbc121febc5290b1371.
Diffstat (limited to 'gi/pygi-cache.h')
-rw-r--r--gi/pygi-cache.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/gi/pygi-cache.h b/gi/pygi-cache.h
index 4dfabd86..574563b6 100644
--- a/gi/pygi-cache.h
+++ b/gi/pygi-cache.h
@@ -50,14 +50,21 @@ typedef gboolean (*PyGIMarshalFromPyFunc) (PyGIInvokeState *state,
typedef PyObject *(*PyGIMarshalToPyFunc) (PyGIInvokeState *state,
PyGICallableCache *callable_cache,
PyGIArgCache *arg_cache,
- GIArgument *arg);
+ GIArgument *arg,
+ gpointer *cleanup_data);
typedef void (*PyGIMarshalCleanupFunc) (PyGIInvokeState *state,
PyGIArgCache *arg_cache,
- PyObject *py_arg, /* always NULL for to_py cleanup */
+ PyObject *py_arg,
gpointer data,
gboolean was_processed);
+typedef void (*PyGIMarshalToPyCleanupFunc) (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ gpointer cleanup_data,
+ gpointer data,
+ gboolean was_processed);
+
/* Argument meta types denote how we process the argument:
* - PYGI_META_ARG_TYPE_PARENT - parents may or may not have children
* but are always processed via the normal marshaller for their
@@ -118,7 +125,7 @@ struct _PyGIArgCache
PyGIMarshalToPyFunc to_py_marshaller;
PyGIMarshalCleanupFunc from_py_cleanup;
- PyGIMarshalCleanupFunc to_py_cleanup;
+ PyGIMarshalToPyCleanupFunc to_py_cleanup;
GDestroyNotify destroy_notify;