From e8c322ee8568b6fbe01625f047f7056aa00cd818 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 3 Mar 2011 12:00:35 +0000 Subject: Py/RNA API: WITH_PYTHON_SAFETY compile time option which enables extra safety checks. since this is noticeably slower I rather not enable by default yet. --- source/blender/python/SConscript | 31 ++++++++++++++++++++--------- source/blender/python/intern/CMakeLists.txt | 4 ++++ source/blender/python/intern/bpy_rna.h | 18 ++++++++++++----- 3 files changed, 39 insertions(+), 14 deletions(-) (limited to 'source') diff --git a/source/blender/python/SConscript b/source/blender/python/SConscript index 315fc5ca9a3..30cd5a842ca 100644 --- a/source/blender/python/SConscript +++ b/source/blender/python/SConscript @@ -1,24 +1,37 @@ #!/usr/bin/python -Import ('env') -sources = env.Glob('intern/*.c') +# TODO, split into 2 files. + +Import ('env') incs = '. ../editors/include ../makesdna ../makesrna ../blenlib ../blenkernel ../nodes' incs += ' ../imbuf ../blenloader ../render/extern/include ../windowmanager' incs += ' #intern/guardedalloc #intern/memutil #extern/glew/include' incs += ' #intern/audaspace/intern ' + env['BF_PYTHON_INC'] +is_debug = (env['OURPLATFORM'] in ('win32-mingw', 'win32-vc','win64-vc') and env['BF_DEBUG']) + +# generic defs = [] -if env['BF_BUILDINFO']: - defs.append('BUILD_DATE') +if is_debug: + defs.append('_DEBUG') + +sources = env.Glob('generic/*.c') +env.BlenderLib( libname = 'bf_python_ext', sources = Split(sources), includes = Split(incs), defines = defs, libtype = ['core','player'], priority = [362,165]) # ketsji is 360 -if env['OURPLATFORM'] in ('win32-mingw', 'win32-vc','win64-vc') and env['BF_DEBUG']: + +# bpy +defs = [] + +if is_debug: defs.append('_DEBUG') -env.BlenderLib( libname = 'bf_python', sources = Split(sources), includes = Split(incs), defines = defs, libtype = ['core','player'], priority = [361,160]) +if env['WITH_BF_PYTHON_SAFETY']: + defs.append('WITH_PYTHON_SAFETY') +if env['BF_BUILDINFO']: + defs.append('BUILD_DATE') -# generic -sources = env.Glob('generic/*.c') -env.BlenderLib( libname = 'bf_python_ext', sources = Split(sources), includes = Split(incs), defines = defs, libtype = ['core','player'], priority = [362,165]) # ketsji is 360 +sources = env.Glob('intern/*.c') +env.BlenderLib( libname = 'bf_python', sources = Split(sources), includes = Split(incs), defines = defs, libtype = ['core','player'], priority = [361,160]) diff --git a/source/blender/python/intern/CMakeLists.txt b/source/blender/python/intern/CMakeLists.txt index bf91fd90744..fbf2741533e 100644 --- a/source/blender/python/intern/CMakeLists.txt +++ b/source/blender/python/intern/CMakeLists.txt @@ -76,4 +76,8 @@ if(WITH_PYTHON_MODULE) add_definitions(-DWITH_PYTHON_MODULE) endif() +if(WITH_PYTHON_SAFETY) + add_definitions(-DWITH_PYTHON_SAFETY) +endif() + blender_add_lib(bf_python "${SRC}" "${INC}") diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h index b5da9bf91be..8705efb055a 100644 --- a/source/blender/python/intern/bpy_rna.h +++ b/source/blender/python/intern/bpy_rna.h @@ -29,23 +29,31 @@ #ifndef BPY_RNA_H #define BPY_RNA_H - /* --- bpy build options --- */ +#ifdef WITH_PYTHON_SAFETY + /* play it safe and keep optional for now, need to test further now this affects looping on 10000's of verts for eg. */ -// #define USE_WEAKREFS +#define USE_WEAKREFS /* method to invalidate removed py data, XXX, slow to remove objects, otherwise no overhead */ -//#define USE_PYRNA_INVALIDATE_GC +/* #define USE_PYRNA_INVALIDATE_GC */ /* different method */ -//#define USE_PYRNA_INVALIDATE_WEAKREF +#define USE_PYRNA_INVALIDATE_WEAKREF /* support for inter references, currently only needed for corner case */ -// #define USE_PYRNA_STRUCT_REFERENCE +#define USE_PYRNA_STRUCT_REFERENCE /* use real collection iterators rather then faking with a list */ #define USE_PYRNA_ITER +#else /* WITH_PYTHON_SAFETY */ + + /* default, no defines! */ + +#endif /* !WITH_PYTHON_SAFETY */ + + /* sanity checks on above defs */ #if defined(USE_PYRNA_INVALIDATE_WEAKREF) && !defined(USE_WEAKREFS) #define USE_WEAKREFS -- cgit v1.2.3