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/editors/space_view3d/space_view3d.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/editors/space_view3d/space_view3d.c')
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 325e502f620..61649e105ee 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -632,8 +632,7 @@ static void view3d_recalc_used_layers(ARegion *ar, wmNotifier *wmn, Scene *scene static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) { - bScreen *sc; - + /* context changes */ switch (wmn->category) { case NC_ANIMATION: @@ -656,7 +655,8 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case NC_SCENE: switch (wmn->data) { case ND_LAYER_CONTENT: - view3d_recalc_used_layers(ar, wmn, wmn->reference); + if (wmn->reference) + view3d_recalc_used_layers(ar, wmn, wmn->reference); ED_region_tag_redraw(ar); break; case ND_FRAME: @@ -784,8 +784,10 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_SCREENSET: /* screen was changed, need to update used layers due to NC_SCENE|ND_LAYER_CONTENT */ /* updates used layers only for View3D in active screen */ - sc = wmn->reference; - view3d_recalc_used_layers(ar, wmn, sc->scene); + if (wmn->reference) { + bScreen *sc = wmn->reference; + view3d_recalc_used_layers(ar, wmn, sc->scene); + } ED_region_tag_redraw(ar); break; } |