From d5984b2d50c25cdc97ebad70f00b37c523cd757e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 9 Jul 2011 17:41:39 +0000 Subject: fix [#27683] Blender hangs when baking a particle system when a driver is present --- source/blender/python/intern/bpy_driver.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'source/blender/python/intern/bpy_driver.c') diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c index dec393bd1e4..bcd5df97c2c 100644 --- a/source/blender/python/intern/bpy_driver.c +++ b/source/blender/python/intern/bpy_driver.c @@ -41,6 +41,8 @@ #include "bpy_driver.h" +#include "../generic/py_capi_utils.h" + /* for pydrivers (drivers using one-line Python expressions to express relationships between targets) */ PyObject *bpy_pydriver_Dict= NULL; @@ -87,7 +89,7 @@ int bpy_pydriver_create_dict(void) void BPY_driver_reset(void) { PyGILState_STATE gilstate; - int use_gil= 1; // (PyThreadState_Get()==NULL); + int use_gil= !PYC_INTERPRETER_ACTIVE; if(use_gil) gilstate= PyGILState_Ensure(); @@ -120,7 +122,7 @@ static void pydriver_error(ChannelDriver *driver) * * note: PyGILState_Ensure() isnt always called because python can call the * bake operator which intern starts a thread which calls scene update which - * does a driver update. to avoid a deadlock check PyThreadState_Get() if PyGILState_Ensure() is needed. + * does a driver update. to avoid a deadlock check PYC_INTERPRETER_ACTIVE if PyGILState_Ensure() is needed. */ float BPY_driver_exec(ChannelDriver *driver) { @@ -147,7 +149,7 @@ float BPY_driver_exec(ChannelDriver *driver) return 0.0f; } - use_gil= 1; //(PyThreadState_Get()==NULL); + use_gil= !PYC_INTERPRETER_ACTIVE; if(use_gil) gilstate= PyGILState_Ensure(); -- cgit v1.2.3