diff options
author | Ton Roosendaal <ton@blender.org> | 2012-12-17 16:03:31 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2012-12-17 16:03:31 +0400 |
commit | b61958c80db5ea206a9d425ed78a2238779b3d96 (patch) | |
tree | 4bb92e1b4d305b82ae5f725be23663831314073b /source/blender/blenkernel/intern/blender.c | |
parent | 734b4f60c1865d88d375b7c5b2003edc8c2291fa (diff) |
Bugfix 33560
Setup: 2 windows, 2 scenes, shared objects and groups.
Errors:
- editing in 1 window, didn't correctly update shared stuff in the other
(like child - parent relations)
- deleting group members in 1 scene, could crash the other.
Fixes:
- On load, only a depsgraph was created for the "active" scene. Now it makes
depsgraphs for all visible scenes.
- "DAG ID flushes" were only working on active scenes too, they now take
the other visible into account as well.
- Delete object - notifier was only sent to the active scene.
All in all it's a real depsgraph fix (for once!) :) Using multi-window and
multi-scene setups now is more useful.
Diffstat (limited to 'source/blender/blenkernel/intern/blender.c')
-rw-r--r-- | source/blender/blenkernel/intern/blender.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index 7aec7dddba6..5c0856bc95b 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -54,6 +54,7 @@ #include "DNA_screen_types.h" #include "DNA_sequence_types.h" #include "DNA_sound_types.h" +#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "BLI_dynstr.h" @@ -334,6 +335,20 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, const char *filepath } /* baseflags, groups, make depsgraph, etc */ + /* first handle case if other windows have different scenes visible */ + if (mode == 0) { + wmWindowManager *wm = G.main->wm.first; + + if (wm) { + wmWindow *win; + + for (win = wm->windows.first; win; win = win->next) { + if (win->screen && win->screen->scene) /* zealous check... */ + if (win->screen->scene != CTX_data_scene(C)) + BKE_scene_set_background(G.main, win->screen->scene); + } + } + } BKE_scene_set_background(G.main, CTX_data_scene(C)); if (mode != 'u') { @@ -341,8 +356,7 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, const char *filepath } MEM_freeN(bfd); - - (void)curscene; /* quiet warning */ + } static int handle_subversion_warning(Main *main, ReportList *reports) |