forked from bartvdbraak/blender
make freeing sequencer strip without cache an option only exposed within sequencer.c
This commit is contained in:
parent
ab4b74f1ed
commit
6f0cbd787d
@ -199,7 +199,7 @@ int BKE_sequencer_recursive_apply(struct Sequence *seq, int (*apply_func)(struct
|
|||||||
|
|
||||||
void BKE_sequencer_free_clipboard(void);
|
void BKE_sequencer_free_clipboard(void);
|
||||||
|
|
||||||
void BKE_sequence_free(struct Scene *scene, struct Sequence *seq, const int do_cache);
|
void BKE_sequence_free(struct Scene *scene, struct Sequence *seq);
|
||||||
const char *BKE_sequence_give_name(struct Sequence *seq);
|
const char *BKE_sequence_give_name(struct Sequence *seq);
|
||||||
void BKE_sequence_calc(struct Scene *scene, struct Sequence *seq);
|
void BKE_sequence_calc(struct Scene *scene, struct Sequence *seq);
|
||||||
void BKE_sequence_calc_disp(struct Scene *scene, struct Sequence *seq);
|
void BKE_sequence_calc_disp(struct Scene *scene, struct Sequence *seq);
|
||||||
|
@ -169,7 +169,8 @@ static void seq_free_strip(Strip *strip)
|
|||||||
MEM_freeN(strip);
|
MEM_freeN(strip);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BKE_sequence_free(Scene *scene, Sequence *seq, const int do_cache)
|
/* only give option to skip cache locally (static func) */
|
||||||
|
static void BKE_sequence_free_ex(Scene *scene, Sequence *seq, const int do_cache)
|
||||||
{
|
{
|
||||||
if (seq->strip)
|
if (seq->strip)
|
||||||
seq_free_strip(seq->strip);
|
seq_free_strip(seq->strip);
|
||||||
@ -219,6 +220,11 @@ void BKE_sequence_free(Scene *scene, Sequence *seq, const int do_cache)
|
|||||||
MEM_freeN(seq);
|
MEM_freeN(seq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BKE_sequence_free(Scene *scene, Sequence *seq)
|
||||||
|
{
|
||||||
|
BKE_sequence_free_ex(scene, seq, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
/* cache must be freed before calling this function
|
/* cache must be freed before calling this function
|
||||||
* since it leaves the seqbase in an invalid state */
|
* since it leaves the seqbase in an invalid state */
|
||||||
static void seq_free_sequence_recurse(Scene *scene, Sequence *seq)
|
static void seq_free_sequence_recurse(Scene *scene, Sequence *seq)
|
||||||
@ -230,7 +236,7 @@ static void seq_free_sequence_recurse(Scene *scene, Sequence *seq)
|
|||||||
seq_free_sequence_recurse(scene, iseq);
|
seq_free_sequence_recurse(scene, iseq);
|
||||||
}
|
}
|
||||||
|
|
||||||
BKE_sequence_free(scene, seq, FALSE);
|
BKE_sequence_free_ex(scene, seq, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -251,7 +257,7 @@ static void seq_free_clipboard_recursive(Sequence *seq_parent)
|
|||||||
seq_free_clipboard_recursive(seq);
|
seq_free_clipboard_recursive(seq);
|
||||||
}
|
}
|
||||||
|
|
||||||
BKE_sequence_free(NULL, seq_parent, FALSE);
|
BKE_sequence_free_ex(NULL, seq_parent, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BKE_sequencer_free_clipboard(void)
|
void BKE_sequencer_free_clipboard(void)
|
||||||
@ -290,7 +296,8 @@ void BKE_sequencer_editing_free(Scene *scene)
|
|||||||
|
|
||||||
SEQ_BEGIN (ed, seq)
|
SEQ_BEGIN (ed, seq)
|
||||||
{
|
{
|
||||||
BKE_sequence_free(scene, seq, FALSE);
|
/* handle cache freeing above */
|
||||||
|
BKE_sequence_free_ex(scene, seq, FALSE);
|
||||||
}
|
}
|
||||||
SEQ_END
|
SEQ_END
|
||||||
|
|
||||||
|
@ -613,7 +613,7 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de
|
|||||||
BLI_remlink(lb, seq);
|
BLI_remlink(lb, seq);
|
||||||
if (seq == last_seq) BKE_sequencer_active_set(scene, NULL);
|
if (seq == last_seq) BKE_sequencer_active_set(scene, NULL);
|
||||||
if (seq->type == SEQ_TYPE_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1);
|
if (seq->type == SEQ_TYPE_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1);
|
||||||
BKE_sequence_free(scene, seq, TRUE);
|
BKE_sequence_free(scene, seq);
|
||||||
}
|
}
|
||||||
seq = seqn;
|
seq = seqn;
|
||||||
}
|
}
|
||||||
@ -1812,7 +1812,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
|
|||||||
start_ofs += step;
|
start_ofs += step;
|
||||||
}
|
}
|
||||||
|
|
||||||
BKE_sequence_free(scene, seq, TRUE);
|
BKE_sequence_free(scene, seq);
|
||||||
seq = seq->next;
|
seq = seq->next;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -2010,7 +2010,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator *UNUSED(op))
|
|||||||
last_seq->seqbase.last = NULL;
|
last_seq->seqbase.last = NULL;
|
||||||
|
|
||||||
BLI_remlink(ed->seqbasep, last_seq);
|
BLI_remlink(ed->seqbasep, last_seq);
|
||||||
BKE_sequence_free(scene, last_seq, TRUE);
|
BKE_sequence_free(scene, last_seq);
|
||||||
|
|
||||||
/* emtpy meta strip, delete all effects depending on it */
|
/* emtpy meta strip, delete all effects depending on it */
|
||||||
for (seq = ed->seqbasep->first; seq; seq = seq->next)
|
for (seq = ed->seqbasep->first; seq; seq = seq->next)
|
||||||
|
@ -170,7 +170,7 @@ static Sequence *rna_Sequences_new_image(ID *id, Editing *ed, ReportList *report
|
|||||||
if (seq->strip->stripdata->name[0] == '\0') {
|
if (seq->strip->stripdata->name[0] == '\0') {
|
||||||
BKE_report(reports, RPT_ERROR, "Sequences.new_image: unable to open image file");
|
BKE_report(reports, RPT_ERROR, "Sequences.new_image: unable to open image file");
|
||||||
BLI_remlink(&ed->seqbase, seq);
|
BLI_remlink(&ed->seqbase, seq);
|
||||||
BKE_sequence_free(scene, seq, FALSE); /* cache won't have been generated */
|
BKE_sequence_free(scene, seq);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,7 +315,7 @@ static void rna_Sequences_remove(ID *id, Editing *ed, Sequence *seq)
|
|||||||
Scene *scene = (Scene *)id;
|
Scene *scene = (Scene *)id;
|
||||||
|
|
||||||
BLI_remlink(&ed->seqbase, seq);
|
BLI_remlink(&ed->seqbase, seq);
|
||||||
BKE_sequence_free(scene, seq, TRUE);
|
BKE_sequence_free(scene, seq);
|
||||||
|
|
||||||
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene);
|
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user