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 { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs