From b4ec6efb41bbf05c6811da9276e7697939ed3ee1 Mon Sep 17 00:00:00 2001 From: Joseph Eagar Date: Wed, 7 Nov 2007 18:52:23 +0000 Subject: [PATCH] =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. --- source/blender/python/api2_2x/Scene.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/source/blender/python/api2_2x/Scene.c b/source/blender/python/api2_2x/Scene.c index 62b3a44690b..05768a1daf3 100644 --- a/source/blender/python/api2_2x/Scene.c +++ b/source/blender/python/api2_2x/Scene.c @@ -805,10 +805,18 @@ static PyObject *Scene_update( BPy_Scene * self, PyObject * args ) if( !full ) DAG_scene_sort( scene ); - else if( full == 1 ) + else if( full == 1 ) { + int enablescripts = G.f & G_DOSCRIPTLINKS; + + /*Disable scriptlinks to prevent firing off newframe scriptlink + events.*/ + G.f &= ~G_DOSCRIPTLINKS; set_scene_bg( scene ); - - else + 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"