[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