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>2021-11-15 22:23:57 +0300
committerRichard Antalik <richardantalik@gmail.com>2021-11-15 22:23:57 +0300
commit7e148c45c89a7016f937aed90c399154546d8e9f (patch)
tree03b32252a937e706d8f909389f5a19a03125e535 /source/blender/editors/space_sequencer/sequencer_edit.c
parentd3c45e1c391eaafd9c54dba5b574b1a7ee23c82a (diff)
Fix T90415: Missing cache invalidation
Some RNA properties and operators did not invalidate cache or did it incorrectly. Reviewed By: sergey Differential Revision: https://developer.blender.org/D13101
Diffstat (limited to 'source/blender/editors/space_sequencer/sequencer_edit.c')
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 8c70f4e3f7a..12a6981baee 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -818,8 +818,6 @@ static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *even
case EVT_ESCKEY:
case RIGHTMOUSE: {
- Editing *ed = SEQ_editing_get(scene);
-
for (int i = 0; i < data->num_seq; i++) {
transseq_restore(data->ts + i, data->seq_array[i]);
}
@@ -839,8 +837,6 @@ static int sequencer_slip_modal(bContext *C, wmOperator *op, const wmEvent *even
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
- SEQ_relations_free_imbuf(scene, &ed->seqbase, false);
-
if (area) {
ED_area_status_text(area, NULL);
}
@@ -1116,7 +1112,6 @@ static int sequencer_reload_exec(bContext *C, wmOperator *op)
for (seq = ed->seqbasep->first; seq; seq = seq->next) {
if (seq->flag & SELECT) {
- SEQ_relations_update_changed_seq_and_deps(scene, seq, 0, 1);
SEQ_add_reload_new_file(bmain, scene, seq, !adjust_length);
if (adjust_length) {
@@ -1326,7 +1321,9 @@ static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
last_seq->seq3 = seq3;
int old_start = last_seq->start;
- SEQ_relations_update_changed_seq_and_deps(scene, last_seq, 1, 1);
+ SEQ_time_update_recursive(scene, last_seq);
+
+ SEQ_relations_invalidate_cache_preprocessed(scene, last_seq);
SEQ_offset_animdata(scene, last_seq, (last_seq->start - old_start));
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
@@ -1384,7 +1381,7 @@ static int sequencer_swap_inputs_exec(bContext *C, wmOperator *op)
last_seq->seq1 = last_seq->seq2;
last_seq->seq2 = seq;
- SEQ_relations_update_changed_seq_and_deps(scene, last_seq, 1, 1);
+ SEQ_relations_invalidate_cache_preprocessed(scene, last_seq);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
@@ -1791,6 +1788,7 @@ static int sequencer_offset_clear_exec(bContext *C, wmOperator *UNUSED(op))
while (seq) {
ListBase *seqbase = SEQ_active_seqbase_get(ed);
SEQ_time_update_sequence(scene, seqbase, seq);
+ SEQ_relations_invalidate_cache_preprocessed(scene, seq);
seq = seq->next;
}
@@ -2202,10 +2200,12 @@ static void swap_sequence(Scene *scene, Sequence *seqa, Sequence *seqb)
seq_b_start = (seqb->start - seqb->startdisp) + seqa->startdisp;
SEQ_transform_translate_sequence(scene, seqb, seq_b_start - seqb->start);
SEQ_time_update_sequence(scene, seqbase, seqb);
+ SEQ_relations_invalidate_cache_preprocessed(scene, seqb);
seq_a_start = (seqa->start - seqa->startdisp) + seqb->enddisp + gap;
SEQ_transform_translate_sequence(scene, seqa, seq_a_start - seqa->start);
SEQ_time_update_sequence(scene, seqbase, seqa);
+ SEQ_relations_invalidate_cache_preprocessed(scene, seqa);
}
static Sequence *find_next_prev_sequence(Scene *scene, Sequence *test, int lr, int sel)
@@ -2673,7 +2673,6 @@ static const EnumPropertyItem prop_change_effect_input_types[] = {
static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
- Editing *ed = SEQ_editing_get(scene);
Sequence *seq = SEQ_select_active_get(scene);
Sequence **seq_1, **seq_2;
@@ -2700,10 +2699,7 @@ static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
SWAP(Sequence *, *seq_1, *seq_2);
- SEQ_relations_update_changed_seq_and_deps(scene, seq, 0, 1);
-
- /* Invalidate cache. */
- SEQ_relations_free_imbuf(scene, &ed->seqbase, false);
+ SEQ_relations_invalidate_cache_preprocessed(scene, seq);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
@@ -2757,7 +2753,6 @@ EnumPropertyItem sequencer_prop_effect_types[] = {
static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
- Editing *ed = SEQ_editing_get(scene);
Sequence *seq = SEQ_select_active_get(scene);
const int new_type = RNA_enum_get(op->ptr, "type");
@@ -2783,10 +2778,7 @@ static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
sh = SEQ_effect_handle_get(seq);
sh.init(seq);
- SEQ_relations_update_changed_seq_and_deps(scene, seq, 0, 1);
- /* Invalidate cache. */
- SEQ_relations_free_imbuf(scene, &ed->seqbase, false);
-
+ SEQ_relations_invalidate_cache_preprocessed(scene, seq);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
return OPERATOR_FINISHED;
@@ -2880,9 +2872,6 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op)
ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(scene));
SEQ_time_update_sequence(scene, seqbase, seq);
-
- /* Invalidate cache. */
- SEQ_relations_free_imbuf(scene, seqbase, false);
}
else if (ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD)) {
bSound *sound = seq->sound;
@@ -2906,8 +2895,10 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op)
prop = RNA_struct_find_property(&seq_ptr, "filepath");
RNA_property_string_set(&seq_ptr, prop, filepath);
RNA_property_update(C, &seq_ptr, prop);
+ SEQ_relations_sequence_free_anim(seq);
}
+ SEQ_relations_invalidate_cache_raw(scene, seq);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
return OPERATOR_FINISHED;