diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-02-11 03:39:07 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-02-11 03:39:07 +0300 |
commit | b1cdf5c34478204fbec5272b97754abc548da195 (patch) | |
tree | 20008226c4b3e86362e2ae767c63cbe124ea76fa /release/scripts/modules/bpy_types.py | |
parent | fb8c135584292ddb8ddb7fe5060cac8f941100e2 (diff) |
use weak references for the internal metaclass typemap,
this should help with blender leaking memory with python classes though the bug is still not fixed.
Diffstat (limited to 'release/scripts/modules/bpy_types.py')
-rw-r--r-- | release/scripts/modules/bpy_types.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index b11ef203df5..fcc3166b066 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -556,9 +556,10 @@ TypeMap = {} class RNAMeta(type): def __new__(cls, name, bases, classdict, **args): - import traceback result = type.__new__(cls, name, bases, classdict) if bases and bases[0] != StructRNA: + import traceback + import weakref module = result.__module__ # first part of packages only @@ -567,7 +568,7 @@ class RNAMeta(type): sf = traceback.extract_stack(limit=2)[0] - TypeMap.setdefault(module, []).append((result, sf[0], sf[1])) + TypeMap.setdefault(module, []).append((weakref.ref(result), sf[0], sf[1])) return result |