diff options
author | Ton Roosendaal <ton@blender.org> | 2009-02-25 12:36:25 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-02-25 12:36:25 +0300 |
commit | 669dd229f467b6f28efb7b2f11e727c5293740c0 (patch) | |
tree | 84c702fd5218f357969d4ee4f36cc183e1fac2b4 /source/blender | |
parent | d9862517fbdb06bbcf4c5b5982764b362457f63d (diff) |
2.5
Bugfix: commit of last week that moved object_handle_update() out
of the view3d code into event loop caused render to crash. This
update should not be called during render. In future it'll even
be thread-locked or better; solved by giving objects an 'owner'
for storage of updates.
This solves a lot of crashes on render.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 7bf5cddd1b9..5247cb8abc1 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -218,18 +218,20 @@ void wm_event_do_notifiers(bContext *C) } } - /* update all objects, ipos, matrices, displists, etc. Flags set by depgraph or manual, - no layer check here, gets correct flushed */ - /* sets first, we allow per definition current scene to have dependencies on sets */ - if(scene->set) { - for(SETLOOPER(scene->set, base)) + if(G.rendering==0) { // XXX make lock in future, or separated derivedmesh users in scene + + /* update all objects, ipos, matrices, displists, etc. Flags set by depgraph or manual, + no layer check here, gets correct flushed */ + /* sets first, we allow per definition current scene to have dependencies on sets */ + if(scene->set) { + for(SETLOOPER(scene->set, base)) + object_handle_update(scene, base->object); + } + + for(base= scene->base.first; base; base= base->next) { object_handle_update(scene, base->object); - } - - for(base= scene->base.first; base; base= base->next) { - object_handle_update(scene, base->object); - } - + } + } } CTX_wm_window_set(C, NULL); } |