Cleanup: VSE effects never have 3 inputs, remove seq3 handling

"seq3" input for VSE effect strips has been there ever since
"initial revision" commit in 2002, with comment "pointers voor effecten"
even. But it has never been used, so remove all code that pretends
to do something with it.

Pull Request: https://projects.blender.org/blender/blender/pulls/127401
This commit is contained in:
Aras Pranckevicius
2024-09-11 17:56:22 +02:00
committed by Aras Pranckevicius
parent 1a52f2bbab
commit 30dbb7820d
14 changed files with 27 additions and 144 deletions

View File

@@ -1436,10 +1436,8 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
load_data_init_from_operator(&load_data, C, op);
load_data.effect.type = RNA_enum_get(op->ptr, "type");
Sequence *seq1, *seq2, *seq3;
if (!seq_effect_find_selected(
scene, nullptr, load_data.effect.type, &seq1, &seq2, &seq3, &error_msg))
{
Sequence *seq1, *seq2;
if (!seq_effect_find_selected(scene, nullptr, load_data.effect.type, &seq1, &seq2, &error_msg)) {
BKE_report(op->reports, RPT_ERROR, error_msg);
return OPERATOR_CANCELLED;
}
@@ -1450,13 +1448,11 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op)
load_data.effect.seq1 = seq1;
load_data.effect.seq2 = seq2;
load_data.effect.seq3 = seq3;
/* Set channel. If unset, use lowest free one above strips. */
if (!RNA_struct_property_is_set(op->ptr, "channel")) {
if (seq1 != nullptr) {
int chan = max_iii(
seq1 ? seq1->machine : 0, seq2 ? seq2->machine : 0, seq3 ? seq3->machine : 0);
int chan = max_ii(seq1 ? seq1->machine : 0, seq2 ? seq2->machine : 0);
if (chan < MAXSEQ) {
load_data.channel = chan;
}

View File

@@ -406,12 +406,6 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op)
scene, seq, (snap_frame - SEQ_time_left_handle_frame_get(scene, seq)));
}
}
else if (seq->seq3 && (seq->seq3->flag & SELECT)) {
if (!either_handle_selected) {
SEQ_offset_animdata(
scene, seq, (snap_frame - SEQ_time_left_handle_frame_get(scene, seq)));
}
}
}
}
@@ -1206,11 +1200,10 @@ int seq_effect_find_selected(Scene *scene,
int type,
Sequence **r_selseq1,
Sequence **r_selseq2,
Sequence **r_selseq3,
const char **r_error_str)
{
Editing *ed = SEQ_editing_get(scene);
Sequence *seq1 = nullptr, *seq2 = nullptr, *seq3 = nullptr;
Sequence *seq1 = nullptr, *seq2 = nullptr;
*r_error_str = nullptr;
@@ -1219,7 +1212,7 @@ int seq_effect_find_selected(Scene *scene,
}
if (SEQ_effect_get_num_inputs(type) == 0) {
*r_selseq1 = *r_selseq2 = *r_selseq3 = nullptr;
*r_selseq1 = *r_selseq2 = nullptr;
return 1;
}
@@ -1236,25 +1229,14 @@ int seq_effect_find_selected(Scene *scene,
else if (seq1 == nullptr) {
seq1 = seq;
}
else if (seq3 == nullptr) {
seq3 = seq;
}
else {
*r_error_str = N_("Cannot apply effect to more than 3 sequence strips");
*r_error_str = N_("Cannot apply effect to more than 2 sequence strips");
return 0;
}
}
}
}
/* Make sequence selection a little bit more intuitive
* for 3 strips: the last-strip should be seq3. */
if (seq3 != nullptr && seq2 != nullptr) {
Sequence *tmp = seq2;
seq2 = seq3;
seq3 = tmp;
}
switch (SEQ_effect_get_num_inputs(type)) {
case 1:
if (seq2 == nullptr) {
@@ -1264,34 +1246,24 @@ int seq_effect_find_selected(Scene *scene,
if (seq1 == nullptr) {
seq1 = seq2;
}
if (seq3 == nullptr) {
seq3 = seq2;
}
ATTR_FALLTHROUGH;
case 2:
if (seq1 == nullptr || seq2 == nullptr) {
*r_error_str = N_("2 selected sequence strips are needed");
return 0;
}
if (seq3 == nullptr) {
seq3 = seq2;
}
break;
}
if (seq1 == nullptr && seq2 == nullptr && seq3 == nullptr) {
if (seq1 == nullptr && seq2 == nullptr) {
*r_error_str = N_("TODO: in what cases does this happen?");
return 0;
}
*r_selseq1 = seq1;
*r_selseq2 = seq2;
*r_selseq3 = seq3;
/* TODO(Richard): This function needs some refactoring, this is just quick hack for #73828. */
if (SEQ_effect_get_num_inputs(type) < 3) {
*r_selseq3 = nullptr;
}
if (SEQ_effect_get_num_inputs(type) < 2) {
*r_selseq2 = nullptr;
}
@@ -1302,7 +1274,7 @@ int seq_effect_find_selected(Scene *scene,
static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
Sequence *seq1, *seq2, *seq3, *last_seq = SEQ_select_active_get(scene);
Sequence *seq1, *seq2, *last_seq = SEQ_select_active_get(scene);
const char *error_msg;
if (SEQ_effect_get_num_inputs(last_seq->type) == 0) {
@@ -1310,8 +1282,7 @@ static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
if (!seq_effect_find_selected(
scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg) ||
if (!seq_effect_find_selected(scene, last_seq, last_seq->type, &seq1, &seq2, &error_msg) ||
SEQ_effect_get_num_inputs(last_seq->type) == 0)
{
BKE_report(op->reports, RPT_ERROR, error_msg);
@@ -1319,8 +1290,7 @@ static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
}
/* Check if reassigning would create recursivity. */
if (SEQ_relations_render_loop_check(seq1, last_seq) ||
SEQ_relations_render_loop_check(seq2, last_seq) ||
SEQ_relations_render_loop_check(seq3, last_seq))
SEQ_relations_render_loop_check(seq2, last_seq))
{
BKE_report(op->reports, RPT_ERROR, "Cannot reassign inputs: recursion detected");
return OPERATOR_CANCELLED;
@@ -1328,7 +1298,6 @@ static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op)
last_seq->seq1 = seq1;
last_seq->seq2 = seq2;
last_seq->seq3 = seq3;
int old_start = last_seq->start;
@@ -1407,7 +1376,7 @@ void SEQUENCER_OT_swap_inputs(wmOperatorType *ot)
/* Identifiers. */
ot->name = "Swap Inputs";
ot->idname = "SEQUENCER_OT_swap_inputs";
ot->description = "Swap the first two inputs for the effect strip";
ot->description = "Swap the two inputs of the effect strip";
/* Api callbacks. */
ot->exec = sequencer_swap_inputs_exec;
@@ -2363,7 +2332,7 @@ static Sequence *find_next_prev_sequence(Scene *scene, Sequence *test, int lr, i
static bool seq_is_parent(const Sequence *par, const Sequence *seq)
{
return ((par->seq1 == seq) || (par->seq2 == seq) || (par->seq3 == seq));
return ((par->seq1 == seq) || (par->seq2 == seq));
}
static int sequencer_swap_exec(bContext *C, wmOperator *op)
@@ -2384,13 +2353,11 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op)
if (seq) {
/* Disallow effect strips. */
if (SEQ_effect_get_num_inputs(seq->type) >= 1 &&
(seq->effectdata || seq->seq1 || seq->seq2 || seq->seq3))
{
if (SEQ_effect_get_num_inputs(seq->type) >= 1 && (seq->effectdata || seq->seq1 || seq->seq2)) {
return OPERATOR_CANCELLED;
}
if ((SEQ_effect_get_num_inputs(active_seq->type) >= 1) &&
(active_seq->effectdata || active_seq->seq1 || active_seq->seq2 || active_seq->seq3))
(active_seq->effectdata || active_seq->seq1 || active_seq->seq2))
{
return OPERATOR_CANCELLED;
}
@@ -2650,34 +2617,12 @@ void SEQUENCER_OT_swap_data(wmOperatorType *ot)
/** \name Change Effect Input Operator
* \{ */
static const EnumPropertyItem prop_change_effect_input_types[] = {
{0, "A_B", 0, "A " BLI_STR_UTF8_RIGHTWARDS_ARROW " B", ""},
{1, "B_C", 0, "B " BLI_STR_UTF8_RIGHTWARDS_ARROW " C", ""},
{2, "A_C", 0, "A " BLI_STR_UTF8_RIGHTWARDS_ARROW " C", ""},
{0, nullptr, 0, nullptr, nullptr},
};
static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
{
Scene *scene = CTX_data_scene(C);
Sequence *seq = SEQ_select_active_get(scene);
Sequence **seq_1, **seq_2;
switch (RNA_enum_get(op->ptr, "swap")) {
case 0:
seq_1 = &seq->seq1;
seq_2 = &seq->seq2;
break;
case 1:
seq_1 = &seq->seq2;
seq_2 = &seq->seq3;
break;
default: /* 2 */
seq_1 = &seq->seq1;
seq_2 = &seq->seq3;
break;
}
Sequence **seq_1 = &seq->seq1, **seq_2 = &seq->seq2;
if (*seq_1 == nullptr || *seq_2 == nullptr) {
BKE_report(op->reports, RPT_ERROR, "One of the effect inputs is unset, cannot swap");
@@ -2704,9 +2649,6 @@ void SEQUENCER_OT_change_effect_input(wmOperatorType *ot)
/* Flags. */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
ot->prop = RNA_def_enum(
ot->srna, "swap", prop_change_effect_input_types, 0, "Swap", "The effect inputs to swap");
}
/** \} */

View File

@@ -177,7 +177,6 @@ int seq_effect_find_selected(Scene *scene,
int type,
Sequence **r_selseq1,
Sequence **r_selseq2,
Sequence **r_selseq3,
const char **r_error_str);
/* Operator helpers. */

View File

@@ -2422,9 +2422,6 @@ static bool select_grouped_effect(blender::Span<Sequence *> strips,
if (seq->seq2) {
seq->seq2->flag |= SELECT;
}
if (seq->seq3) {
seq->seq3->flag |= SELECT;
}
changed = true;
}
}

View File

@@ -194,16 +194,14 @@ typedef struct Sequence {
float startstill, endstill;
/** Machine: the strip channel */
int machine;
int _pad;
/** Starting and ending points of the effect strip. Undefined for other strip types. */
int startdisp, enddisp;
float sat;
float mul;
float _pad1;
short anim_preseek; /* UNUSED. */
/** Stream-index for movie or sound files with several streams. */
short streamindex;
short _pad;
/** For multi-camera source selection. */
int multicam_source;
/** MOVIECLIP render flags. */
@@ -231,7 +229,7 @@ typedef struct Sequence {
float speed_fader;
/* pointers for effects: */
struct Sequence *seq1, *seq2, *seq3;
struct Sequence *seq1, *seq2;
/** List of strips for meta-strips. */
ListBase seqbase;
@@ -291,7 +289,6 @@ typedef struct Sequence {
float speed_factor;
struct SeqRetimingKey *retiming_keys;
void *_pad5;
int retiming_keys_num;
char _pad6[4];

View File

@@ -2696,16 +2696,6 @@ static void rna_def_effect_inputs(StructRNA *srna, int count)
RNA_def_property_pointer_funcs(prop, nullptr, "rna_Sequence_input_2_set", nullptr, nullptr);
RNA_def_property_ui_text(prop, "Input 2", "Second input for the effect strip");
}
# if 0
if (count == 3) {
/* Not used by any effects (perhaps one day plugins?). */
prop = RNA_def_property(srna, "input_3", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, nullptr, "seq3");
RNA_def_property_flag(prop, PROP_EDITABLE | PROP_NEVER_NULL);
RNA_def_property_ui_text(prop, "Input 3", "Third input for the effect strip");
}
# endif
}
static void rna_def_color_management(StructRNA *srna)

View File

@@ -450,8 +450,7 @@ static Sequence *rna_Sequences_new_effect(ID *id,
int frame_start,
int frame_end,
Sequence *seq1,
Sequence *seq2,
Sequence *seq3)
Sequence *seq2)
{
Scene *scene = (Scene *)id;
Sequence *seq;
@@ -476,17 +475,11 @@ static Sequence *rna_Sequences_new_effect(ID *id,
return nullptr;
}
break;
case 3:
if (seq1 == nullptr || seq2 == nullptr || seq3 == nullptr) {
BKE_report(reports, RPT_ERROR, "Sequences.new_effect: effect takes 3 input sequences");
return nullptr;
}
break;
default:
BKE_reportf(
reports,
RPT_ERROR,
"Sequences.new_effect: effect expects more than 3 inputs (%d, should never happen!)",
"Sequences.new_effect: effect expects more than 2 inputs (%d, should never happen!)",
num_inputs);
return nullptr;
}
@@ -497,7 +490,6 @@ static Sequence *rna_Sequences_new_effect(ID *id,
load_data.effect.type = type;
load_data.effect.seq1 = seq1;
load_data.effect.seq2 = seq2;
load_data.effect.seq3 = seq3;
seq = SEQ_add_effect_strip(scene, seqbase, &load_data);
DEG_id_tag_update(&scene->id, ID_RECALC_SEQUENCER_STRIPS);
@@ -515,11 +507,10 @@ static Sequence *rna_Sequences_editing_new_effect(ID *id,
int frame_start,
int frame_end,
Sequence *seq1,
Sequence *seq2,
Sequence *seq3)
Sequence *seq2)
{
return rna_Sequences_new_effect(
id, &ed->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2, seq3);
id, &ed->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2);
}
static Sequence *rna_Sequences_meta_new_effect(ID *id,
@@ -531,11 +522,10 @@ static Sequence *rna_Sequences_meta_new_effect(ID *id,
int frame_start,
int frame_end,
Sequence *seq1,
Sequence *seq2,
Sequence *seq3)
Sequence *seq2)
{
return rna_Sequences_new_effect(
id, &seq->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2, seq3);
id, &seq->seqbase, reports, name, type, channel, frame_start, frame_end, seq1, seq2);
}
static void rna_Sequences_remove(
@@ -1075,7 +1065,6 @@ void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop, const bool metastri
INT_MAX);
RNA_def_pointer(func, "seq1", "Sequence", "", "Sequence 1 for effect");
RNA_def_pointer(func, "seq2", "Sequence", "", "Sequence 2 for effect");
RNA_def_pointer(func, "seq3", "Sequence", "", "Sequence 3 for effect");
/* return type */
parm = RNA_def_pointer(func, "sequence", "Sequence", "", "New Sequence");
RNA_def_function_return(func, parm);

View File

@@ -48,7 +48,6 @@ struct SeqLoadData {
int end_frame;
Sequence *seq1;
Sequence *seq2;
Sequence *seq3;
} effect; /* Only for effect strips. */
eSeqLoadFlags flags;
eSeqImageFitMethod fit_method;

View File

@@ -243,16 +243,11 @@ void SEQ_query_strip_effect_chain(const Scene *scene,
if (reference_strip->seq2) {
SEQ_query_strip_effect_chain(scene, reference_strip->seq2, seqbase, strips);
}
if (reference_strip->seq3) {
SEQ_query_strip_effect_chain(scene, reference_strip->seq3, seqbase, strips);
}
}
/* Find all strips connected to reference_strip. */
LISTBASE_FOREACH (Sequence *, seq_test, seqbase) {
if (seq_test->seq1 == reference_strip || seq_test->seq2 == reference_strip ||
seq_test->seq3 == reference_strip)
{
if (seq_test->seq1 == reference_strip || seq_test->seq2 == reference_strip) {
SEQ_query_strip_effect_chain(scene, seq_test, seqbase, strips);
}
}

View File

@@ -316,9 +316,6 @@ static void seq_new_fix_links_recursive(Sequence *seq)
if (seq->seq2 && seq->seq2->tmp) {
seq->seq2 = static_cast<Sequence *>(seq->seq2->tmp);
}
if (seq->seq3 && seq->seq3->tmp) {
seq->seq3 = static_cast<Sequence *>(seq->seq3->tmp);
}
}
else if (seq->type == SEQ_TYPE_META) {
LISTBASE_FOREACH (Sequence *, seqn, &seq->seqbase) {
@@ -829,12 +826,6 @@ static bool seq_read_data_cb(Sequence *seq, void *user_data)
BLO_read_struct(reader, Sequence, &seq->seq1);
BLO_read_struct(reader, Sequence, &seq->seq2);
BLO_read_struct(reader, Sequence, &seq->seq3);
/* a patch: after introduction of effects with 3 input strips */
if (seq->seq3 == nullptr) {
seq->seq3 = seq->seq2;
}
if (seq->effectdata) {
switch (seq->type) {

View File

@@ -167,7 +167,6 @@ Sequence *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, SeqLoadData *loa
sh.init(seq);
seq->seq1 = load_data->effect.seq1;
seq->seq2 = load_data->effect.seq2;
seq->seq3 = load_data->effect.seq3;
if (SEQ_effect_get_num_inputs(seq->type) == 1) {
seq->blend_mode = seq->seq1->blend_mode;

View File

@@ -367,13 +367,6 @@ static bool seq_edit_split_effect_inputs_intersect(const Scene *scene,
scene, seq->seq2, timeline_frame);
}
}
if (seq->seq3) {
input_does_intersect |= seq_edit_split_intersect_check(scene, seq->seq3, timeline_frame);
if ((seq->seq1->type & SEQ_TYPE_EFFECT) != 0) {
input_does_intersect |= seq_edit_split_effect_inputs_intersect(
scene, seq->seq3, timeline_frame);
}
}
return input_does_intersect;
}

View File

@@ -379,8 +379,7 @@ bool SEQ_relations_render_loop_check(Sequence *seq_main, Sequence *seq)
}
if ((seq_main->seq1 && SEQ_relations_render_loop_check(seq_main->seq1, seq)) ||
(seq_main->seq2 && SEQ_relations_render_loop_check(seq_main->seq2, seq)) ||
(seq_main->seq3 && SEQ_relations_render_loop_check(seq_main->seq3, seq)))
(seq_main->seq2 && SEQ_relations_render_loop_check(seq_main->seq2, seq)))
{
return true;
}

View File

@@ -59,16 +59,13 @@ bool SEQ_transform_seqbase_isolated_sel_check(ListBase *seqbase)
if (seq->flag & SELECT) {
if ((seq->seq1 && (seq->seq1->flag & SELECT) == 0) ||
(seq->seq2 && (seq->seq2->flag & SELECT) == 0) ||
(seq->seq3 && (seq->seq3->flag & SELECT) == 0))
(seq->seq2 && (seq->seq2->flag & SELECT) == 0))
{
return false;
}
}
else {
if ((seq->seq1 && (seq->seq1->flag & SELECT)) || (seq->seq2 && (seq->seq2->flag & SELECT)) ||
(seq->seq3 && (seq->seq3->flag & SELECT)))
{
if ((seq->seq1 && (seq->seq1->flag & SELECT)) || (seq->seq2 && (seq->seq2->flag & SELECT))) {
return false;
}
}