[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39075] trunk/blender/source/blender/ python/intern: ifdef out support for for python owning and freeing BPy_StructRNA because this is only used for doc generation and it makes _every_ blender /python instance 4 bytes bigger - vertex/bezier point/object/scene/ group etc.
Campbell Barton
ideasman42 at gmail.com
Fri Aug 5 18:29:38 CEST 2011
Revision: 39075
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39075
Author: campbellbarton
Date: 2011-08-05 16:29:38 +0000 (Fri, 05 Aug 2011)
Log Message:
-----------
ifdef out support for for python owning and freeing BPy_StructRNA because this is only used for doc generation and it makes _every_ blender/python instance 4 bytes bigger - vertex/bezier point/object/scene/group etc.
Modified Paths:
--------------
trunk/blender/source/blender/python/intern/bpy_operator.c
trunk/blender/source/blender/python/intern/bpy_rna.c
trunk/blender/source/blender/python/intern/bpy_rna.h
Modified: trunk/blender/source/blender/python/intern/bpy_operator.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_operator.c 2011-08-05 16:21:37 UTC (rev 39074)
+++ trunk/blender/source/blender/python/intern/bpy_operator.c 2011-08-05 16:29:38 UTC (rev 39075)
@@ -397,7 +397,9 @@
pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr);
+#ifdef PYRNA_FREE_SUPPORT
pyrna->freeptr= TRUE;
+#endif
return (PyObject *)pyrna;
}
Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2011-08-05 16:21:37 UTC (rev 39074)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2011-08-05 16:29:38 UTC (rev 39075)
@@ -957,11 +957,13 @@
/* use our own dealloc so we can free a property if we use one */
static void pyrna_struct_dealloc(BPy_StructRNA *self)
{
+#ifdef PYRNA_FREE_SUPPORT
if (self->freeptr && self->ptr.data) {
IDP_FreeProperty(self->ptr.data);
MEM_freeN(self->ptr.data);
self->ptr.data= NULL;
}
+#endif /* PYRNA_FREE_SUPPORT */
#ifdef USE_WEAKREFS
if (self->in_weakreflist != NULL) {
@@ -5495,7 +5497,9 @@
}
pyrna->ptr= *ptr;
+#ifdef PYRNA_FREE_SUPPORT
pyrna->freeptr= FALSE;
+#endif
#ifdef USE_PYRNA_STRUCT_REFERENCE
pyrna->reference= NULL;
Modified: trunk/blender/source/blender/python/intern/bpy_rna.h
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.h 2011-08-05 16:21:37 UTC (rev 39074)
+++ trunk/blender/source/blender/python/intern/bpy_rna.h 2011-08-05 16:29:38 UTC (rev 39075)
@@ -62,6 +62,11 @@
#if defined(USE_PYRNA_INVALIDATE_GC) && defined(USE_PYRNA_INVALIDATE_WEAKREF)
#error "Only 1 reference check method at a time!"
#endif
+
+/* only used by operator introspection get_rna(), this is only used for doc gen
+ * so prefer the leak to the memory bloat for now. */
+// #define PYRNA_FREE_SUPPORT
+
/* --- end bpy build options --- */
struct ID;
@@ -108,7 +113,10 @@
* hold onto the collection iterator to prevent it from freeing allocated data we may use */
PyObject *reference;
#endif /* !USE_PYRNA_STRUCT_REFERENCE */
+
+#ifdef PYRNA_FREE_SUPPORT
int freeptr; /* needed in some cases if ptr.data is created on the fly, free when deallocing */
+#endif /* PYRNA_FREE_SUPPORT */
} BPy_StructRNA;
typedef struct {
More information about the Bf-blender-cvs
mailing list