Fix issues when adding retiming key outside of strip boundary
When retiming key is added to frame before strip starts, this causes crash on null dereference. After adding null check, this creates retiming data, even though operation is not valid. To prevent creating empty retiming data, `SEQ_retiming_data_ensure()` is only executed, when operator actually adds a keyframe.
This commit is contained in:
@@ -202,11 +202,10 @@ static bool retiming_key_add_new_for_seq(bContext *C,
|
||||
const int timeline_frame)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
const int frame_index = BKE_scene_frame_get(scene) - SEQ_time_start_frame_get(seq);
|
||||
const SeqRetimingKey *key = SEQ_retiming_find_segment_start_key(seq, frame_index);
|
||||
|
||||
if (SEQ_retiming_key_is_transition_start(key)) {
|
||||
if (key != nullptr && SEQ_retiming_key_is_transition_start(key)) {
|
||||
BKE_report(op->reports, RPT_WARNING, "Can not create key inside of speed transition");
|
||||
return false;
|
||||
}
|
||||
@@ -216,6 +215,7 @@ static bool retiming_key_add_new_for_seq(bContext *C,
|
||||
return false;
|
||||
}
|
||||
|
||||
SEQ_retiming_data_ensure(seq);
|
||||
SEQ_retiming_add_key(scene, seq, timeline_frame);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user