diff options
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r-- | source/blender/blenloader/intern/versioning_290.c | 17 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_300.c | 46 |
2 files changed, 46 insertions, 17 deletions
diff --git a/source/blender/blenloader/intern/versioning_290.c b/source/blender/blenloader/intern/versioning_290.c index a15ddc75aa2..47786f55871 100644 --- a/source/blender/blenloader/intern/versioning_290.c +++ b/source/blender/blenloader/intern/versioning_290.c @@ -160,7 +160,7 @@ static void seq_convert_transform_crop(const Scene *scene, const uint32_t use_transform_flag = (1 << 16); const uint32_t use_crop_flag = (1 << 17); - const StripElem *s_elem = SEQ_render_give_stripelem(seq, seq->start); + const StripElem *s_elem = SEQ_render_give_stripelem(scene, seq, seq->start); if (s_elem != NULL) { image_size_x = s_elem->orig_width; image_size_y = s_elem->orig_height; @@ -285,7 +285,7 @@ static void seq_convert_transform_crop_2(const Scene *scene, Sequence *seq, const eSpaceSeq_Proxy_RenderSize render_size) { - const StripElem *s_elem = SEQ_render_give_stripelem(seq, seq->start); + const StripElem *s_elem = SEQ_render_give_stripelem(scene, seq, seq->start); if (s_elem == NULL) { return; } @@ -350,6 +350,7 @@ static void seq_convert_transform_crop_lb_2(const Scene *scene, static void seq_update_meta_disp_range(Scene *scene) { Editing *ed = SEQ_editing_get(scene); + if (ed == NULL) { return; } @@ -357,8 +358,8 @@ static void seq_update_meta_disp_range(Scene *scene) LISTBASE_FOREACH_BACKWARD (MetaStack *, ms, &ed->metastack) { /* Update ms->disp_range from meta. */ if (ms->disp_range[0] == ms->disp_range[1]) { - ms->disp_range[0] = SEQ_time_left_handle_frame_get(ms->parseq); - ms->disp_range[1] = SEQ_time_right_handle_frame_get(ms->parseq); + ms->disp_range[0] = SEQ_time_left_handle_frame_get(scene, ms->parseq); + ms->disp_range[1] = SEQ_time_right_handle_frame_get(scene, ms->parseq); } /* Update meta strip endpoints. */ @@ -366,6 +367,14 @@ static void seq_update_meta_disp_range(Scene *scene) SEQ_time_right_handle_frame_set(scene, ms->parseq, ms->disp_range[1]); SEQ_transform_fix_single_image_seq_offsets(scene, ms->parseq); + /* Recalculate effects using meta strip. */ + LISTBASE_FOREACH (Sequence *, seq, ms->oldbasep) { + if (seq->seq2) { + seq->start = seq->startdisp = max_ii(seq->seq1->startdisp, seq->seq2->startdisp); + seq->enddisp = min_ii(seq->seq1->enddisp, seq->seq2->enddisp); + } + } + /* Ensure that active seqbase points to active meta strip seqbase. */ MetaStack *active_ms = SEQ_meta_stack_active_get(ed); SEQ_seqbase_active_set(ed, &active_ms->parseq->seqbase); diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c index 57fd71f8933..9514f1667b1 100644 --- a/source/blender/blenloader/intern/versioning_300.c +++ b/source/blender/blenloader/intern/versioning_300.c @@ -408,7 +408,7 @@ static void do_versions_sequencer_speed_effect_recursive(Scene *scene, const Lis v->speed_control_type = SEQ_SPEED_MULTIPLY; v->speed_fader = globalSpeed * ((float)seq->seq1->len / - max_ff((float)(SEQ_time_right_handle_frame_get(seq->seq1) - + max_ff((float)(SEQ_time_right_handle_frame_get(scene, seq->seq1) - seq->seq1->start), 1.0f)); } @@ -1235,6 +1235,17 @@ static bool version_merge_still_offsets(Sequence *seq, void *UNUSED(user_data)) return true; } +static bool seq_speed_factor_set(Sequence *seq, void *UNUSED(user_data)) +{ + if (seq->type == SEQ_TYPE_SOUND_RAM) { + seq->speed_factor = seq->pitch; + } + else { + seq->speed_factor = 1.0f; + } + return true; +} + /* Those `version_liboverride_rnacollections_*` functions mimic the old, pre-3.0 code to find * anchor and source items in the given list of modifiers, constraints etc., using only the * `subitem_local` data of the override property operation. @@ -3171,18 +3182,7 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain) } } - /** - * Versioning code until next subversion bump goes here. - * - * \note Be sure to check when bumping the version: - * - "versioning_userdef.c", #blo_do_versions_userdef - * - "versioning_userdef.c", #do_versions_theme - * - * \note Keep this message at the bottom of the function. - */ - { - /* Keep this block, even when empty. */ - + if (!MAIN_VERSION_ATLEAST(bmain, 303, 5)) { /* Fix for T98925 - remove channels region, that was initialized in incorrect editor types. */ for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) { @@ -3201,5 +3201,25 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain) } } } + + LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { + Editing *ed = SEQ_editing_get(scene); + if (ed == NULL) { + continue; + } + SEQ_for_each_callback(&ed->seqbase, seq_speed_factor_set, NULL); + } + } + /** + * Versioning code until next subversion bump goes here. + * + * \note Be sure to check when bumping the version: + * - "versioning_userdef.c", #blo_do_versions_userdef + * - "versioning_userdef.c", #do_versions_theme + * + * \note Keep this message at the bottom of the function. + */ + { + /* Keep this block, even when empty. */ } } |