=Python API bugfix=

Scene.update(full=1) was pretty useless as it didn't actually evaluate the
depsgraph DAG.  This meant, for example, that re-evaluating the parenting
tree for an armature pose could only be done by redrawing the view (which
evaluates the depsgraph). scene_update_for_newframe() is now called when Scene.update is in "full" mode; to prevent firing off newframe scriptlink events, scriptlinks are
temporarily disabled while scene_update_for_newframe() is being called.
This commit is contained in:
Joseph Eagar 2007-11-07 18:52:23 +00:00
parent 50e5c9d1c2
commit b4ec6efb41

@ -805,10 +805,18 @@ static PyObject *Scene_update( BPy_Scene * self, PyObject * args )
if( !full )
DAG_scene_sort( scene );
else if( full == 1 )
set_scene_bg( scene );
else if( full == 1 ) {
int enablescripts = G.f & G_DOSCRIPTLINKS;
else
/*Disable scriptlinks to prevent firing off newframe scriptlink
events.*/
G.f &= ~G_DOSCRIPTLINKS;
set_scene_bg( scene );
scene_update_for_newframe( scene, scene->lay );
/*re-enabled scriptlinks if necassary.*/
if (enablescripts) G.f |= G_DOSCRIPTLINKS;
} else
return EXPP_ReturnPyObjError( PyExc_ValueError,
"in method scene.update(full), full should be:\n"
"0: to only sort scene elements (old behavior); or\n"