Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Antalik <richardantalik@gmail.com>2020-08-17 21:19:11 +0300
committerRichard Antalik <richardantalik@gmail.com>2020-08-17 21:19:11 +0300
commit4b69e55da358cbfe98fd9ac85151a7107315959b (patch)
tree7fbb2c79fd32a2fa509f6d18b0fd9851215b2ff2 /source/blender/editors
parent2b896fc48165be96855bd6d8067ae46c32d049a3 (diff)
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
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c6
1 files changed, 6 insertions, 0 deletions
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);
}