diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-10-16 11:15:52 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-10-16 11:15:52 +0300 |
commit | 76e8d2cc174315e3f71b561872e4fb88cfd75743 (patch) | |
tree | 323681629c8c1d9475ebe5b132f973da06acd32e | |
parent | 4a77ddf146e2842080ba1febcc9c58af9c77f848 (diff) | |
parent | 80f0bc99a9831709338fdb252546829afdf4912a (diff) |
Merge branch 'blender-v2.81-release'
-rw-r--r-- | source/blender/blenkernel/BKE_scene.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 8 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_scene_api.c | 6 |
3 files changed, 10 insertions, 6 deletions
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index 5b77c36024a..51abc7390b8 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -125,7 +125,7 @@ struct Scene *BKE_scene_find_from_collection(const struct Main *bmain, #ifdef DURIAN_CAMERA_SWITCH struct Object *BKE_scene_camera_switch_find(struct Scene *scene); // DURIAN_CAMERA_SWITCH #endif -int BKE_scene_camera_switch_update(struct Scene *scene); +bool BKE_scene_camera_switch_update(struct Scene *scene); char *BKE_scene_find_marker_name(struct Scene *scene, int frame); char *BKE_scene_find_last_marker_name(struct Scene *scene, int frame); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index e8e849cdf6d..53e5f1fdfe5 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -1008,19 +1008,19 @@ Object *BKE_scene_camera_switch_find(Scene *scene) } #endif -int BKE_scene_camera_switch_update(Scene *scene) +bool BKE_scene_camera_switch_update(Scene *scene) { #ifdef DURIAN_CAMERA_SWITCH Object *camera = BKE_scene_camera_switch_find(scene); - if (camera) { + if (camera && (camera != scene->camera)) { scene->camera = camera; DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE); - return 1; + return true; } #else (void)scene; #endif - return 0; + return false; } char *BKE_scene_find_marker_name(Scene *scene, int frame) diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c index 2b1b23a40f4..8a06d594c1f 100644 --- a/source/blender/makesrna/intern/rna_scene_api.c +++ b/source/blender/makesrna/intern/rna_scene_api.c @@ -88,7 +88,11 @@ static void rna_Scene_frame_set(Scene *scene, Main *bmain, int frame, float subf BPy_END_ALLOW_THREADS; # endif - BKE_scene_camera_switch_update(scene); + if (BKE_scene_camera_switch_update(scene)) { + for (bScreen *sc = bmain->screens.first; sc; sc = sc->id.next) { + BKE_screen_view3d_scene_sync(sc, scene); + } + } /* don't do notifier when we're rendering, avoid some viewport crashes * redrawing while the data is being modified for render */ |