diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2013-03-25 21:22:00 +0400 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2013-03-25 21:22:00 +0400 |
commit | 09bae3d35dc7c7f303d6ab3c16ff756760eb5b67 (patch) | |
tree | 83e5b135f0bc6b770468cdba6f21c878d7e88238 | |
parent | 40ab9be14a26b5a032fbb5512bc3dc7d0d3c4a2a (diff) |
Fix [#34716] Change Trim Duration (soft) value nothing happening. until mouse drag footage(image sequence)
As those two properties do not need a custom set func, yet need recalc of strips drawing/positions in addition to usual rna_Sequencer_update() (cache invalidating), I renamed rna_Sequence_frame_change_update to do_sequence_frame_change_update, and made a new rna_Sequence_frame_change_update which is directly usable as RNA update func, and call both the strip and cache update funcs.
Thanks to Sergey for advices!
-rw-r--r-- | source/blender/makesrna/intern/rna_sequencer.c | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index ed9d12cd1e0..475b3e614c1 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -92,6 +92,18 @@ static void meta_tmp_ref(Sequence *seq_par, Sequence *seq) } } +static void rna_Sequence_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) +{ + Scene *scene = (Scene *) ptr->id.data; + Editing *ed = BKE_sequencer_editing_get(scene, FALSE); + + if (ed) { + Sequence *seq = (Sequence *) ptr->data; + + BKE_sequence_invalidate_cache(scene, seq); + } +} + static void rna_SequenceEditor_sequences_all_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { Scene *scene = (Scene *)ptr->id.data; @@ -145,7 +157,7 @@ static void rna_SequenceEditor_elements_begin(CollectionPropertyIterator *iter, rna_SequenceEditor_elements_length(ptr), 0, NULL); } -static void rna_Sequence_frame_change_update(Scene *scene, Sequence *seq) +static void do_sequence_frame_change_update(Scene *scene, Sequence *seq) { Editing *ed = BKE_sequencer_editing_get(scene, FALSE); ListBase *seqbase = BKE_sequence_seqbase(&ed->seqbase, seq); @@ -157,13 +169,23 @@ static void rna_Sequence_frame_change_update(Scene *scene, Sequence *seq) BKE_sequencer_sort(scene); } +/* A simple wrapper around above func, directly usable as prop update func. + * Also invalidate cache if needed. + */ +static void rna_Sequence_frame_change_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr) +{ + Scene *scene = (Scene *)ptr->id.data; + do_sequence_frame_change_update(scene, (Sequence *)ptr->data); + rna_Sequence_update(bmain, scene, ptr); +} + static void rna_Sequence_start_frame_set(PointerRNA *ptr, int value) { Sequence *seq = (Sequence *)ptr->data; Scene *scene = (Scene *)ptr->id.data; BKE_sequence_translate(scene, seq, value - seq->start); - rna_Sequence_frame_change_update(scene, seq); + do_sequence_frame_change_update(scene, seq); } static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value) @@ -173,7 +195,7 @@ static void rna_Sequence_start_frame_final_set(PointerRNA *ptr, int value) BKE_sequence_tx_set_final_left(seq, value); BKE_sequence_single_fix(seq); - rna_Sequence_frame_change_update(scene, seq); + do_sequence_frame_change_update(scene, seq); } static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value) @@ -183,7 +205,7 @@ static void rna_Sequence_end_frame_final_set(PointerRNA *ptr, int value) BKE_sequence_tx_set_final_right(seq, value); BKE_sequence_single_fix(seq); - rna_Sequence_frame_change_update(scene, seq); + do_sequence_frame_change_update(scene, seq); } static void rna_Sequence_anim_startofs_final_set(PointerRNA *ptr, int value) @@ -194,7 +216,7 @@ static void rna_Sequence_anim_startofs_final_set(PointerRNA *ptr, int value) seq->anim_startofs = MIN2(value, seq->len + seq->anim_startofs); BKE_sequence_reload_new_file(scene, seq, FALSE); - rna_Sequence_frame_change_update(scene, seq); + do_sequence_frame_change_update(scene, seq); } static void rna_Sequence_anim_endofs_final_set(PointerRNA *ptr, int value) @@ -205,7 +227,7 @@ static void rna_Sequence_anim_endofs_final_set(PointerRNA *ptr, int value) seq->anim_endofs = MIN2(value, seq->len + seq->anim_endofs); BKE_sequence_reload_new_file(scene, seq, FALSE); - rna_Sequence_frame_change_update(scene, seq); + do_sequence_frame_change_update(scene, seq); } static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value) @@ -214,7 +236,7 @@ static void rna_Sequence_frame_length_set(PointerRNA *ptr, int value) Scene *scene = (Scene *)ptr->id.data; BKE_sequence_tx_set_final_right(seq, seq->start + value); - rna_Sequence_frame_change_update(scene, seq); + do_sequence_frame_change_update(scene, seq); } static int rna_Sequence_frame_length_get(PointerRNA *ptr) @@ -602,18 +624,6 @@ static void rna_SequenceElement_filename_set(PointerRNA *ptr, const char *value) } #endif -static void rna_Sequence_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) -{ - Scene *scene = (Scene *) ptr->id.data; - Editing *ed = BKE_sequencer_editing_get(scene, FALSE); - - if (ed) { - Sequence *seq = (Sequence *) ptr->data; - - BKE_sequence_invalidate_cache(scene, seq); - } -} - static void rna_Sequence_update_reopen_files(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { Scene *scene = (Scene *) ptr->id.data; @@ -672,7 +682,7 @@ static void rna_Sequence_tcindex_update(Main *bmain, Scene *UNUSED(scene), Point Sequence *seq = sequence_get_by_proxy(ed, ptr->data); BKE_sequence_reload_new_file(scene, seq, FALSE); - rna_Sequence_frame_change_update(scene, seq); + do_sequence_frame_change_update(scene, seq); } static void rna_SequenceProxy_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) @@ -1404,14 +1414,14 @@ 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_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update"); - + 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_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update"); - + 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); RNA_def_property_int_sdna(prop, NULL, "startstill"); // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ @@ -1651,10 +1661,9 @@ static void rna_def_input(StructRNA *srna) RNA_def_property_int_sdna(prop, NULL, "anim_startofs"); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_anim_startofs_final_set", NULL); /* overlap tests */ - RNA_def_property_ui_text(prop, "Animation Start Offset", "Animation start offset (trim start)"); RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update"); - + prop = RNA_def_property(srna, "animation_offset_end", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "anim_endofs"); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); |