Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Antalik <richardantalik@gmail.com>2021-06-19 06:04:16 +0300
committerRichard Antalik <richardantalik@gmail.com>2021-06-19 06:07:00 +0300
commit033641aa743b1f6056a44e57d3d94f9291aff6db (patch)
tree374ef950b9c5ec4c1c869a3196c01fd3b8864983 /source/blender/sequencer
parentf9aea19d98908be450f228a35bb6098e7e3e4b03 (diff)
VSE: Remove seq->tmp usage
Remove `seq->tmp` usage from transform code. It was used to tag strips that need to be "shuffled". Pass these strips in `SeqCollection` instead. Reviewed By: sergey, mano-wii Differential Revision: https://developer.blender.org/D11631
Diffstat (limited to 'source/blender/sequencer')
-rw-r--r--source/blender/sequencer/SEQ_transform.h4
-rw-r--r--source/blender/sequencer/intern/strip_transform.c73
2 files changed, 38 insertions, 39 deletions
diff --git a/source/blender/sequencer/SEQ_transform.h b/source/blender/sequencer/SEQ_transform.h
index d587bd0f1a1..837a2de5742 100644
--- a/source/blender/sequencer/SEQ_transform.h
+++ b/source/blender/sequencer/SEQ_transform.h
@@ -30,6 +30,7 @@ extern "C" {
struct ListBase;
struct Scene;
struct Sequence;
+struct SeqCollection;
int SEQ_transform_get_left_handle_frame(struct Sequence *seq);
int SEQ_transform_get_right_handle_frame(struct Sequence *seq);
@@ -48,7 +49,8 @@ bool SEQ_transform_seqbase_shuffle_ex(struct ListBase *seqbasep,
bool SEQ_transform_seqbase_shuffle(struct ListBase *seqbasep,
struct Sequence *test,
struct Scene *evil_scene);
-bool SEQ_transform_seqbase_shuffle_time(struct ListBase *seqbasep,
+bool SEQ_transform_seqbase_shuffle_time(struct SeqCollection *strips_to_shuffle,
+ struct ListBase *seqbasep,
struct Scene *evil_scene,
struct ListBase *markers,
const bool use_sync_markers);
diff --git a/source/blender/sequencer/intern/strip_transform.c b/source/blender/sequencer/intern/strip_transform.c
index b969f531e68..095d3b2fa9d 100644
--- a/source/blender/sequencer/intern/strip_transform.c
+++ b/source/blender/sequencer/intern/strip_transform.c
@@ -34,6 +34,7 @@
#include "BKE_sound.h"
#include "SEQ_effects.h"
+#include "SEQ_iterator.h"
#include "SEQ_relations.h"
#include "SEQ_sequencer.h"
#include "SEQ_time.h"
@@ -302,73 +303,69 @@ bool SEQ_transform_seqbase_shuffle(ListBase *seqbasep, Sequence *test, Scene *ev
return SEQ_transform_seqbase_shuffle_ex(seqbasep, test, evil_scene, 1);
}
-static int shuffle_seq_time_offset_test(ListBase *seqbasep, char dir)
+static int shuffle_seq_time_offset_test(SeqCollection *strips_to_shuffle,
+ ListBase *seqbasep,
+ char dir)
{
int offset = 0;
- Sequence *seq, *seq_other;
-
- for (seq = seqbasep->first; seq; seq = seq->next) {
- if (seq->tmp) {
- for (seq_other = seqbasep->first; seq_other; seq_other = seq_other->next) {
- if (!seq_other->tmp && seq_overlap(seq, seq_other)) {
- if (dir == 'L') {
- offset = min_ii(offset, seq_other->startdisp - seq->enddisp);
- }
- else {
- offset = max_ii(offset, seq_other->enddisp - seq->startdisp);
- }
- }
+ Sequence *seq;
+
+ SEQ_ITERATOR_FOREACH (seq, strips_to_shuffle) {
+ LISTBASE_FOREACH (Sequence *, seq_other, seqbasep) {
+ if (!seq_overlap(seq, seq_other)) {
+ continue;
+ }
+ if (dir == 'L') {
+ offset = min_ii(offset, seq_other->startdisp - seq->enddisp);
+ }
+ else {
+ offset = max_ii(offset, seq_other->enddisp - seq->startdisp);
}
}
}
return offset;
}
-static int shuffle_seq_time_offset(Scene *scene, ListBase *seqbasep, char dir)
+static int shuffle_seq_time_offset(SeqCollection *strips_to_shuffle,
+ ListBase *seqbasep,
+ Scene *scene,
+ char dir)
{
int ofs = 0;
int tot_ofs = 0;
Sequence *seq;
- while ((ofs = shuffle_seq_time_offset_test(seqbasep, dir))) {
- for (seq = seqbasep->first; seq; seq = seq->next) {
- if (seq->tmp) {
- /* seq_test_overlap only tests display values */
- seq->startdisp += ofs;
- seq->enddisp += ofs;
- }
+ while ((ofs = shuffle_seq_time_offset_test(strips_to_shuffle, seqbasep, dir))) {
+ SEQ_ITERATOR_FOREACH (seq, strips_to_shuffle) {
+ /* seq_test_overlap only tests display values */
+ seq->startdisp += ofs;
+ seq->enddisp += ofs;
}
tot_ofs += ofs;
}
- for (seq = seqbasep->first; seq; seq = seq->next) {
- if (seq->tmp) {
- SEQ_time_update_sequence_bounds(scene, seq); /* corrects dummy startdisp/enddisp values */
- }
+ SEQ_ITERATOR_FOREACH (seq, strips_to_shuffle) {
+ SEQ_time_update_sequence_bounds(scene, seq); /* corrects dummy startdisp/enddisp values */
}
return tot_ofs;
}
-bool SEQ_transform_seqbase_shuffle_time(ListBase *seqbasep,
+bool SEQ_transform_seqbase_shuffle_time(SeqCollection *strips_to_shuffle,
+ ListBase *seqbasep,
Scene *evil_scene,
ListBase *markers,
const bool use_sync_markers)
{
- /* note: seq->tmp is used to tag strips to move */
-
- Sequence *seq;
-
- int offset_l = shuffle_seq_time_offset(evil_scene, seqbasep, 'L');
- int offset_r = shuffle_seq_time_offset(evil_scene, seqbasep, 'R');
+ int offset_l = shuffle_seq_time_offset(strips_to_shuffle, seqbasep, evil_scene, 'L');
+ int offset_r = shuffle_seq_time_offset(strips_to_shuffle, seqbasep, evil_scene, 'R');
int offset = (-offset_l < offset_r) ? offset_l : offset_r;
if (offset) {
- for (seq = seqbasep->first; seq; seq = seq->next) {
- if (seq->tmp) {
- SEQ_transform_translate_sequence(evil_scene, seq, offset);
- seq->flag &= ~SEQ_OVERLAP;
- }
+ Sequence *seq;
+ SEQ_ITERATOR_FOREACH (seq, strips_to_shuffle) {
+ SEQ_transform_translate_sequence(evil_scene, seq, offset);
+ seq->flag &= ~SEQ_OVERLAP;
}
if (use_sync_markers && !(evil_scene->toolsettings->lock_markers) && (markers != NULL)) {