fix [#27683] Blender hangs when baking a particle system when a driver is present

This commit is contained in:
2011-07-09 17:41:39 +00:00
parent 2bb08ee48e
commit d5984b2d50
3 changed files with 7 additions and 5 deletions

View File

@@ -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();