[Bf-blender-cvs] [2c5ee7418c2] master: Fix T63697: correct stuck R_NO_CAMERA_SWITCH in scene->r.mode.

Alexander Gavrilov noreply at git.blender.org
Thu May 2 15:32:06 CEST 2019


Commit: 2c5ee7418c26bb4e756e1fb58508775d25550d08
Author: Alexander Gavrilov
Date:   Thu May 2 16:01:00 2019 +0300
Branches: master
https://developer.blender.org/rB2c5ee7418c26bb4e756e1fb58508775d25550d08

Fix T63697: correct stuck R_NO_CAMERA_SWITCH in scene->r.mode.

This flag becomes stuck in certain situations, causing the marker
camera switch feature to not work.

To fix old files with the problem, clear the flag on file load.

Also, the line that is supposed to clear it has wrong bit math,
causing seq_render_scene_strip to effectively toggle the flag on or
off every time it's run, instead of restoring to original state.

The flag and code were added in 001789d7337a by @campbellbarton.

===================================================================

M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/blenloader/intern/readfile.c

===================================================================

diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 19b94977762..b1a32552878 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3640,7 +3640,7 @@ finally:
 
 #ifdef DURIAN_CAMERA_SWITCH
   /* stooping to new low's in hackyness :( */
-  scene->r.mode &= ~(orig_data.mode & R_NO_CAMERA_SWITCH);
+  scene->r.mode &= orig_data.mode | ~R_NO_CAMERA_SWITCH;
 #endif
 
   return ibuf;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index bf96cc9fa8e..7f62369647a 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -6867,6 +6867,11 @@ static void direct_link_scene(FileData *fd, Scene *sce)
     }
   }
 
+#ifdef DURIAN_CAMERA_SWITCH
+  /* Runtime */
+  sce->r.mode &= ~R_NO_CAMERA_SWITCH;
+#endif
+
   sce->r.avicodecdata = newdataadr(fd, sce->r.avicodecdata);
   if (sce->r.avicodecdata) {
     sce->r.avicodecdata->lpFormat = newdataadr(fd, sce->r.avicodecdata->lpFormat);



More information about the Bf-blender-cvs mailing list