[Bf-blender-cvs] [96db46d17c7] master: Fix T62321: Crash on motion tracking when dopesheet open and deleting track

Sergey Sharybin noreply at git.blender.org
Thu Mar 14 15:18:50 CET 2019


Commit: 96db46d17c77ed1a463d8926393ed27f9a4a038d
Author: Sergey Sharybin
Date:   Thu Mar 14 15:16:56 2019 +0100
Branches: master
https://developer.blender.org/rB96db46d17c77ed1a463d8926393ed27f9a4a038d

Fix T62321: Crash on motion tracking when dopesheet open and deleting track

Need to ensure all dopesheet are properly tagged for update.

The tricky part here is that due to the animation we need to keep
movie clips covered by copy-on-write, but the interface uses an
original clip to draw dopesheet.

Use same idea of an active dependency graph as is done in other
similar cases.

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

M	source/blender/blenkernel/intern/movieclip.c

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

diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index bfa4c4ba068..e4d7af555ed 100644
--- a/source/blender/blenkernel/intern/movieclip.c
+++ b/source/blender/blenkernel/intern/movieclip.c
@@ -66,6 +66,7 @@
 #include "IMB_moviecache.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
 
 #ifdef WITH_OPENEXR
 #  include "intern/openexr/openexr_multi.h"
@@ -1720,6 +1721,10 @@ void BKE_movieclip_eval_update(struct Depsgraph *depsgraph, MovieClip *clip)
 {
 	DEG_debug_print_eval(depsgraph, __func__, clip->id.name, clip);
 	BKE_tracking_dopesheet_tag_update(&clip->tracking);
+	if (DEG_is_active(depsgraph)) {
+		MovieClip *clip_orig = (MovieClip *)DEG_get_original_id(&clip->id);
+		BKE_tracking_dopesheet_tag_update(&clip_orig->tracking);
+	}
 }
 
 void BKE_movieclip_eval_selection_update(struct Depsgraph *depsgraph, MovieClip *clip)



More information about the Bf-blender-cvs mailing list