diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-07-14 13:46:26 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-07-14 13:46:26 +0400 |
commit | 7ad8e5b6f87fbee78d6676e33b80be9cfc74feea (patch) | |
tree | 0cfe1387283a67633ca8f54d2bac20095096f5c2 /source/blender/blenkernel | |
parent | a305a7293923bb9221c37c1c7bb22106e8d9d182 (diff) |
Fix #22816: crash in depsgraph loading some 2.49 files, tagging objects for
update on load should be done later because it's not known yet which scene
is used with which layers visible before the windows are created.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/blender.c | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 57e72fc5671..101c7a3bbbd 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -313,8 +313,6 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, char *filename) /* baseflags, groups, make depsgraph, etc */ set_scene_bg(CTX_data_scene(C)); - - DAG_on_load_update(); MEM_freeN(bfd); } @@ -478,6 +476,9 @@ static int read_undosave(bContext *C, UndoElem *uel) strcpy(G.sce, scestr); G.fileflags= fileflags; + if(success) + DAG_on_load_update(); + return success; } diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 1a1ca8a8d3e..142f80a350e 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2217,7 +2217,7 @@ static void dag_current_scene_layers(Main *bmain, Scene **sce, unsigned int *lay *sce= bmain->scene.first; if(*sce) *lay= (*sce)->lay; - /* XXX for background mode, we should get the scen + /* XXX for background mode, we should get the scene from somewhere, for the -S option, but it's in the context, how to get it here? */ } @@ -2248,7 +2248,7 @@ void DAG_on_load_update(void) dag_current_scene_layers(bmain, &scene, &lay); - if(scene) { + if(scene && scene->theDag) { /* derivedmeshes and displists are not saved to file so need to be remade, tag them so they get remade in the scene update loop, note armature poses or object matrices are preserved and do not |