fix [#36570] Changing the filename of a image strip doesnt refresh sequencer

was casting a StripElem as a Sequencer struct.
This commit is contained in:
2013-08-29 04:08:44 +00:00
parent f934581a78
commit 4d83f957b5
3 changed files with 42 additions and 1 deletions

View File

@@ -194,6 +194,7 @@ void BKE_sequencer_editing_free(struct Scene *scene);
void BKE_sequencer_sort(struct Scene *scene);
struct Sequence *BKE_sequencer_from_elem(ListBase *seqbase, struct StripElem *se);
struct Sequence *BKE_sequencer_active_get(struct Scene *scene);
int BKE_sequencer_active_get_pair(struct Scene *scene, struct Sequence **seq_act, struct Sequence **seq_other);
void BKE_sequencer_active_set(struct Scene *scene, struct Sequence *seq);

View File

@@ -3998,6 +3998,29 @@ Sequence *BKE_sequence_get_by_name(ListBase *seqbase, const char *name, int recu
return NULL;
}
/**
* Only use as last resort when the StripElem is available but no the Sequence.
* (needed for RNA)
*/
Sequence *BKE_sequencer_from_elem(ListBase *seqbase, StripElem *se)
{
Sequence *iseq;
for (iseq = seqbase->first; iseq; iseq = iseq->next) {
Sequence *seq_found;
if ((iseq->strip && iseq->strip->stripdata) &&
(ARRAY_HAS_ITEM(se, iseq->strip->stripdata, iseq->len)))
{
break;
}
else if ((seq_found = BKE_sequencer_from_elem(&iseq->seqbase, se))) {
iseq = seq_found;
break;
}
}
return iseq;
}
Sequence *BKE_sequencer_active_get(Scene *scene)
{

View File

@@ -93,6 +93,23 @@ static void meta_tmp_ref(Sequence *seq_par, Sequence *seq)
}
}
static void rna_SequenceElement_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) {
StripElem *se = (StripElem *)ptr->data;
Sequence *seq;
/* slow but we can't avoid! */
seq = BKE_sequencer_from_elem(&ed->seqbase, se);
if (seq) {
BKE_sequence_invalidate_cache(scene, seq);
}
}
}
static void rna_Sequence_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
Scene *scene = (Scene *) ptr->id.data;
@@ -1063,7 +1080,7 @@ static void rna_def_strip_element(BlenderRNA *brna)
prop = RNA_def_property(srna, "filename", PROP_STRING, PROP_FILENAME);
RNA_def_property_string_sdna(prop, NULL, "name");
RNA_def_property_ui_text(prop, "Filename", "");
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update");
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_SequenceElement_update");
prop = RNA_def_property(srna, "orig_width", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "orig_width");