[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35211] trunk/blender/source/gameengine/ Ketsji/KX_PythonSeq.cpp: cyclic gc support for KX_PythonSeq
Campbell Barton
ideasman42 at gmail.com
Sun Feb 27 04:59:18 CET 2011
Revision: 35211
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35211
Author: campbellbarton
Date: 2011-02-27 03:59:17 +0000 (Sun, 27 Feb 2011)
Log Message:
-----------
cyclic gc support for KX_PythonSeq
Modified Paths:
--------------
trunk/blender/source/gameengine/Ketsji/KX_PythonSeq.cpp
Modified: trunk/blender/source/gameengine/Ketsji/KX_PythonSeq.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_PythonSeq.cpp 2011-02-27 02:08:32 UTC (rev 35210)
+++ trunk/blender/source/gameengine/Ketsji/KX_PythonSeq.cpp 2011-02-27 03:59:17 UTC (rev 35211)
@@ -45,20 +45,32 @@
PyObject *KX_PythonSeq_CreatePyObject( PyObject *base, short type )
{
- KX_PythonSeq *seq = PyObject_NEW( KX_PythonSeq, &KX_PythonSeq_Type);
+ KX_PythonSeq *seq = PyObject_GC_New(KX_PythonSeq, &KX_PythonSeq_Type);
seq->base = base;
Py_INCREF(base); /* so we can always access to check if its valid */
seq->type = type;
seq->iter = -1; /* init */
return (PyObject *)seq;
- }
-
- static void KX_PythonSeq_dealloc( KX_PythonSeq * self )
+}
+
+static int KX_PythonSeq_traverse(KX_PythonSeq *self, visitproc visit, void *arg)
{
- Py_DECREF(self->base);
- PyObject_DEL( self );
+ Py_VISIT(self->base);
+ return 0;
}
+static int KX_PythonSeq_clear(KX_PythonSeq *self)
+{
+ Py_CLEAR(self->base);
+ return 0;
+}
+
+static void KX_PythonSeq_dealloc(KX_PythonSeq * self)
+{
+ KX_PythonSeq_clear(self);
+ PyObject_GC_Del(self);
+}
+
static Py_ssize_t KX_PythonSeq_len( PyObject * self )
{
PyObjectPlus *self_plus= BGE_PROXY_REF(((KX_PythonSeq *)self)->base);
@@ -470,15 +482,15 @@
NULL, /* PyBufferProcs *tp_as_buffer; */
/*** Flags to define presence of optional/expanded features ***/
- Py_TPFLAGS_DEFAULT, /* long tp_flags; */
+ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* long tp_flags; */
NULL, /* char *tp_doc; Documentation string */
/*** Assigned meaning in release 2.0 ***/
/* call function for all accessible objects */
- NULL, /* traverseproc tp_traverse; */
+ (traverseproc)KX_PythonSeq_traverse, /* traverseproc tp_traverse; */
/* delete references to contained objects */
- NULL, /* inquiry tp_clear; */
+ (inquiry)KX_PythonSeq_clear, /* inquiry tp_clear; */
/*** Assigned meaning in release 2.1 ***/
/*** rich comparisons ***/
More information about the Bf-blender-cvs
mailing list