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:
authorTon Roosendaal <ton@blender.org>2009-02-25 12:36:25 +0300
committerTon Roosendaal <ton@blender.org>2009-02-25 12:36:25 +0300
commit669dd229f467b6f28efb7b2f11e727c5293740c0 (patch)
tree84c702fd5218f357969d4ee4f36cc183e1fac2b4 /source/blender/windowmanager
parentd9862517fbdb06bbcf4c5b5982764b362457f63d (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/windowmanager')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c24
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);
}