Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-02-11 03:39:07 +0300
committerCampbell Barton <ideasman42@gmail.com>2011-02-11 03:39:07 +0300
commitb1cdf5c34478204fbec5272b97754abc548da195 (patch)
tree20008226c4b3e86362e2ae767c63cbe124ea76fa /release/scripts/modules/bpy_types.py
parentfb8c135584292ddb8ddb7fe5060cac8f941100e2 (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.py5
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