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:
Diffstat (limited to 'source/blender/makesrna/intern/rna_sequencer.c')
-rw-r--r--source/blender/makesrna/intern/rna_sequencer.c56
1 files changed, 53 insertions, 3 deletions
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index 04729f87cab..f486456bd38 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -291,7 +291,6 @@ static void rna_Sequence_frame_change_update(Main *bmain, Scene *UNUSED(scene),
{
Scene *scene = (Scene *)ptr->owner_id;
do_sequence_frame_change_update(scene, (Sequence *)ptr->data);
- rna_Sequence_invalidate_preprocessed_update(bmain, scene, ptr);
}
static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value)
@@ -299,8 +298,10 @@ static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value)
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
+ BKE_sequence_invalidate_cache_composite(scene, seq);
BKE_sequence_translate(scene, seq, value - seq->start);
do_sequence_frame_change_update(scene, seq);
+ BKE_sequence_invalidate_cache_composite(scene, seq);
}
static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value)
@@ -308,9 +309,11 @@ static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value)
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
+ BKE_sequence_invalidate_cache_composite(scene, seq);
BKE_sequence_tx_set_final_left(seq, value);
BKE_sequence_single_fix(seq);
do_sequence_frame_change_update(scene, seq);
+ BKE_sequence_invalidate_cache_composite(scene, seq);
}
static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value)
@@ -318,9 +321,47 @@ static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value)
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
+ BKE_sequence_invalidate_cache_composite(scene, seq);
BKE_sequence_tx_set_final_right(seq, value);
BKE_sequence_single_fix(seq);
do_sequence_frame_change_update(scene, seq);
+ BKE_sequence_invalidate_cache_composite(scene, seq);
+}
+
+static void rna_Sequence_frame_offset_start_set(PointerRNA *ptr, int value)
+{
+ Sequence *seq = (Sequence *)ptr->data;
+ Scene *scene = (Scene *)ptr->owner_id;
+
+ BKE_sequence_invalidate_cache_composite(scene, seq);
+ seq->startofs = value;
+}
+
+static void rna_Sequence_frame_offset_end_set(PointerRNA *ptr, int value)
+{
+ Sequence *seq = (Sequence *)ptr->data;
+ Scene *scene = (Scene *)ptr->owner_id;
+
+ BKE_sequence_invalidate_cache_composite(scene, seq);
+ seq->endofs = value;
+}
+
+static void rna_Sequence_frame_still_start_set(PointerRNA *ptr, int value)
+{
+ Sequence *seq = (Sequence *)ptr->data;
+ Scene *scene = (Scene *)ptr->owner_id;
+
+ BKE_sequence_invalidate_cache_composite(scene, seq);
+ seq->startstill = value;
+}
+
+static void rna_Sequence_frame_still_end_set(PointerRNA *ptr, int value)
+{
+ Sequence *seq = (Sequence *)ptr->data;
+ Scene *scene = (Scene *)ptr->owner_id;
+
+ BKE_sequence_invalidate_cache_composite(scene, seq);
+ seq->endstill = value;
}
static void rna_Sequence_anim_startofs_final_set(PointerRNA *ptr, int value)
@@ -350,8 +391,10 @@ static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value)
Sequence *seq = (Sequence *)ptr->data;
Scene *scene = (Scene *)ptr->owner_id;
+ BKE_sequence_invalidate_cache_composite(scene, seq);
BKE_sequence_tx_set_final_right(seq, BKE_sequence_tx_get_final_left(seq, false) + value);
do_sequence_frame_change_update(scene, seq);
+ BKE_sequence_invalidate_cache_composite(scene, seq);
}
static int rna_Sequence_frame_length_get(PointerRNA *ptr)
@@ -374,6 +417,7 @@ static void rna_Sequence_channel_set(PointerRNA *ptr, int value)
Editing *ed = BKE_sequencer_editing_get(scene, false);
ListBase *seqbase = BKE_sequence_seqbase(&ed->seqbase, seq);
+ BKE_sequence_invalidate_cache_composite(scene, seq);
/* check channel increment or decrement */
const int channel_delta = (value >= seq->machine) ? 1 : -1;
seq->machine = value;
@@ -383,6 +427,7 @@ static void rna_Sequence_channel_set(PointerRNA *ptr, int value)
BKE_sequence_base_shuffle_ex(seqbase, seq, scene, channel_delta);
}
BKE_sequencer_sort(scene);
+ BKE_sequence_invalidate_cache_composite(scene, seq);
}
static void rna_Sequence_frame_offset_range(
@@ -1627,6 +1672,7 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, NULL);
/* strip positioning */
+ /* Cache has to be invalidated before and after transformation. */
prop = RNA_def_property(srna, "frame_final_duration", PROP_INT, PROP_TIME);
RNA_def_property_range(prop, 1, MAXFRAME);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
@@ -1684,14 +1730,16 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_int_sdna(prop, NULL, "startofs");
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
RNA_def_property_ui_text(prop, "Start Offset", "");
- RNA_def_property_int_funcs(prop, NULL, NULL, "rna_Sequence_frame_offset_range");
+ RNA_def_property_int_funcs(
+ prop, NULL, "rna_Sequence_frame_offset_start_set", "rna_Sequence_frame_offset_range");
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
prop = RNA_def_property(srna, "frame_offset_end", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "endofs");
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
RNA_def_property_ui_text(prop, "End Offset", "");
- RNA_def_property_int_funcs(prop, NULL, NULL, "rna_Sequence_frame_offset_range");
+ RNA_def_property_int_funcs(
+ prop, NULL, "rna_Sequence_frame_offset_end_set", "rna_Sequence_frame_offset_range");
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
prop = RNA_def_property(srna, "frame_still_start", PROP_INT, PROP_TIME);
@@ -1699,6 +1747,7 @@ static void rna_def_sequence(BlenderRNA *brna)
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
RNA_def_property_range(prop, 0, MAXFRAME);
RNA_def_property_ui_text(prop, "Start Still", "");
+ RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_frame_still_start_set", NULL);
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
prop = RNA_def_property(srna, "frame_still_end", PROP_INT, PROP_TIME);
@@ -1706,6 +1755,7 @@ static void rna_def_sequence(BlenderRNA *brna)
// RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */
RNA_def_property_range(prop, 0, MAXFRAME);
RNA_def_property_ui_text(prop, "End Still", "");
+ RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_frame_still_end_set", NULL);
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update");
prop = RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED);