[Bf-blender-cvs] [80f0bc99a98] blender-v2.81-release: Fix T70850: Scene.frame_set doesn't update camera from markers
Campbell Barton
noreply at git.blender.org
Wed Oct 16 10:13:50 CEST 2019
Commit: 80f0bc99a9831709338fdb252546829afdf4912a
Author: Campbell Barton
Date: Wed Oct 16 19:10:28 2019 +1100
Branches: blender-v2.81-release
https://developer.blender.org/rB80f0bc99a9831709338fdb252546829afdf4912a
Fix T70850: Scene.frame_set doesn't update camera from markers
===================================================================
M source/blender/blenkernel/BKE_scene.h
M source/blender/blenkernel/intern/scene.c
M source/blender/makesrna/intern/rna_scene_api.c
===================================================================
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 */
More information about the Bf-blender-cvs
mailing list