diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-14 17:16:56 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-14 17:18:43 +0300 |
commit | 96db46d17c77ed1a463d8926393ed27f9a4a038d (patch) | |
tree | c992278e559b5d7acbdfb00b37c666d36cd85c4d | |
parent | c65be83df0b67de2370ecfd738badaf70e94fd5a (diff) |
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.
-rw-r--r-- | source/blender/blenkernel/intern/movieclip.c | 5 |
1 files changed, 5 insertions, 0 deletions
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) |