diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-02-23 20:56:45 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-02-23 20:56:45 +0300 |
commit | 3f5786a00ed78b32f11b448ee0e568706602d6c8 (patch) | |
tree | ec766426d830770e1e704f5f4ed6edf8521a4c14 /source/blender/python/intern/bpy_driver.c | |
parent | 0dd58a27e9cbae086abf8a40810d20bc1fe59a15 (diff) |
added support for proxies as drivers back.
Diffstat (limited to 'source/blender/python/intern/bpy_driver.c')
-rw-r--r-- | source/blender/python/intern/bpy_driver.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/source/blender/python/intern/bpy_driver.c b/source/blender/python/intern/bpy_driver.c index 288b6edf87d..3c204bab9be 100644 --- a/source/blender/python/intern/bpy_driver.c +++ b/source/blender/python/intern/bpy_driver.c @@ -158,8 +158,7 @@ float BPY_pydriver_eval (ChannelDriver *driver) int i; /* sanity checks - should driver be executed? */ - if ((driver == NULL) /*|| (G.f & G_DOSCRIPTLINKS)==0*/) - return result; + /*if (G.f & G_DOSCRIPTLINKS)==0) return result; */ /* get the py expression to be evaluated */ expr = driver->expression; @@ -255,24 +254,20 @@ float BPY_pydriver_eval (ChannelDriver *driver) /* process the result */ if (retval == NULL) { - result = pydriver_error(driver); - PyGILState_Release(gilstate); - return result; - } + pydriver_error(driver); + result = 0.0f; + } else if((result= (float)PyFloat_AsDouble(retval)) == -1.0f && PyErr_Occurred()) { + pydriver_error(driver); + Py_DECREF(retval); + result = 0.0f; - result = (float)PyFloat_AsDouble(retval); - Py_DECREF(retval); - - if ((result == -1) && PyErr_Occurred()) { - result = pydriver_error(driver); - PyGILState_Release(gilstate); - return result; } - - /* all fine, make sure the "invalid expression" flag is cleared */ - driver->flag &= ~DRIVER_FLAG_INVALID; + else { + /* all fine, make sure the "invalid expression" flag is cleared */ + driver->flag &= ~DRIVER_FLAG_INVALID; + Py_DECREF(retval); + } PyGILState_Release(gilstate); - return result; } |