Commit: 4b69e55da358cbfe98fd9ac85151a7107315959b
Author: Richard Antalik
Date:   Mon Aug 17 20:19:11 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rB4b69e55da358cbfe98fd9ac85151a7107315959b

Fix T79757: Crash on prefetch when renaming strips

Original sequence lookup failed, becase name changed in another thread.
Fix is same as 0471349c90df - stop prefetching before changing content
of seqbase.

I have covered more cases, and added assert so it is more obvious that
issue is in lookup, and it shouldn't fail.

Reviewed By: sergey

Differential Revision: https://developer.blender.org/D8592

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

M       source/blender/blenkernel/intern/seqcache.c
M       source/blender/editors/space_sequencer/sequencer_edit.c
M       source/blender/makesrna/intern/rna_sequencer.c

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

diff --git a/source/blender/blenkernel/intern/seqcache.c 
b/source/blender/blenkernel/intern/seqcache.c
index 5c2d5b0087f..fa4951da161 100644
--- a/source/blender/blenkernel/intern/seqcache.c
+++ b/source/blender/blenkernel/intern/seqcache.c
@@ -1329,6 +1329,7 @@ void BKE_sequencer_cache_put(const SeqRenderData *context,
     context = BKE_sequencer_prefetch_get_original_context(context);
     scene = context->scene;
     seq = BKE_sequencer_prefetch_get_original_sequence(seq, scene);
+    BLI_assert(seq != NULL);
   }
 
   /* Prevent reinserting, it breaks cache key linking. */
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c 
b/source/blender/editors/space_sequencer/sequencer_edit.c
index b2d0362602e..bab099a77c1 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -2751,6 +2751,8 @@ static int sequencer_separate_images_exec(bContext *C, 
wmOperator *op)
 
   seq = ed->seqbasep->first; /* Poll checks this is valid. */
 
+  BKE_sequencer_prefetch_stop(scene);
+
   while (seq) {
     if ((seq->flag & SELECT) && (seq->type == SEQ_TYPE_IMAGE) && (seq->len > 
1)) {
       Sequence *seq_next;
@@ -2946,6 +2948,8 @@ static int sequencer_meta_make_exec(bContext *C, 
wmOperator *op)
     return OPERATOR_CANCELLED;
   }
 
+  BKE_sequencer_prefetch_stop(scene);
+
   /* Remove all selected from main list, and put in meta. */
 
   seqm = BKE_sequence_alloc(ed->seqbasep, 1, 1, SEQ_TYPE_META); /* Channel 
number set later. */
@@ -3031,6 +3035,8 @@ static int sequencer_meta_separate_exec(bContext *C, 
wmOperator *UNUSED(op))
     return OPERATOR_CANCELLED;
   }
 
+  BKE_sequencer_prefetch_stop(scene);
+
   for (seq = last_seq->seqbase.first; seq != NULL; seq = seq->next) {
     BKE_sequence_invalidate_cache_composite(scene, seq);
   }
diff --git a/source/blender/makesrna/intern/rna_sequencer.c 
b/source/blender/makesrna/intern/rna_sequencer.c
index 0cfc6fd569c..629dc104ab5 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -637,6 +637,8 @@ static void rna_Sequence_name_set(PointerRNA *ptr, const 
char *value)
   char oldname[sizeof(seq->name)];
   AnimData *adt;
 
+  BKE_sequencer_prefetch_stop(scene);
+
   /* make a copy of the old name first */
   BLI_strncpy(oldname, seq->name + 2, sizeof(seq->name) - 2);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to