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>2010-02-23 20:56:45 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-02-23 20:56:45 +0300
commit3f5786a00ed78b32f11b448ee0e568706602d6c8 (patch)
treeec766426d830770e1e704f5f4ed6edf8521a4c14 /source/blender/python
parent0dd58a27e9cbae086abf8a40810d20bc1fe59a15 (diff)
added support for proxies as drivers back.
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/intern/bpy_driver.c29
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;
}