diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-03-08 14:11:42 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-03-08 14:11:42 +0300 |
commit | 49b9b159e4a4baaf48b121edf66d3436873dfc48 (patch) | |
tree | 58bb2669f7a5d5b776c94abcea3cedaadeb7750d | |
parent | cf09a2443cef60cda28c2c2023cb84728e644081 (diff) |
Fix T62317: missing Cycles viewport update when changing active camera.
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 4 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene.c | 5 |
3 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 638efab4598..005e78fbc1a 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -3899,8 +3899,10 @@ static int view_camera_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* important these don't get out of sync for locked scenes */ - if (v3d->scenelock) + if (v3d->scenelock && scene->camera != v3d->camera) { scene->camera = v3d->camera; + DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE); + } /* finally do snazzy view zooming */ rv3d->persp = RV3D_CAMOB; diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index b6defa1ad62..e3876abd489 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -639,8 +639,10 @@ static int view3d_setobjectascamera_exec(bContext *C, wmOperator *op) Object *camera_old = (rv3d->persp == RV3D_CAMOB) ? V3D_CAMERA_SCENE(scene, v3d) : NULL; rv3d->persp = RV3D_CAMOB; v3d->camera = ob; - if (v3d->scenelock) + if (v3d->scenelock && scene->camera != ob) { scene->camera = ob; + DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE); + } /* unlikely but looks like a glitch when set to the same */ if (camera_old != ob) { diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c index 6aec918f7f9..70cfa5604d4 100644 --- a/source/blender/makesrna/intern/rna_scene.c +++ b/source/blender/makesrna/intern/rna_scene.c @@ -659,12 +659,13 @@ void rna_Scene_set_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr) } } -static void rna_Scene_view3d_update(Main *bmain, Scene *UNUSED(scene_unused), PointerRNA *ptr) +static void rna_Scene_camera_update(Main *bmain, Scene *UNUSED(scene_unused), PointerRNA *ptr) { wmWindowManager *wm = bmain->wm.first; Scene *scene = (Scene *)ptr->data; WM_windows_scene_data_sync(&wm->windows, scene); + DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE); } static void rna_Scene_fps_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr)) @@ -6387,7 +6388,7 @@ void RNA_def_scene(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Camera_object_poll"); RNA_def_property_ui_text(prop, "Camera", "Active camera, used for rendering the scene"); - RNA_def_property_update(prop, NC_SCENE | NA_EDITED, "rna_Scene_view3d_update"); + RNA_def_property_update(prop, NC_SCENE | NA_EDITED, "rna_Scene_camera_update"); prop = RNA_def_property(srna, "background_set", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "set"); |