diff options
Diffstat (limited to 'source/blender/blenloader/intern/readfile.c')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index e7722e07442..eb22b9a2e2e 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4785,6 +4785,16 @@ static void link_paint(FileData *fd, Scene *sce, Paint *p) } } +static void lib_link_sequence_modifiers(FileData *fd, Scene *scene, ListBase *lb) +{ + SequenceModifierData *smd; + + for (smd = lb->first; smd; smd = smd->next) { + if (smd->mask_id) + smd->mask_id = newlibadr_us(fd, scene->id.lib, smd->mask_id); + } +} + static void lib_link_scene(FileData *fd, Main *main) { Scene *sce; @@ -4869,6 +4879,8 @@ static void lib_link_scene(FileData *fd, Main *main) } } seq->anim = NULL; + + lib_link_sequence_modifiers(fd, sce, &seq->modifiers); } SEQ_END @@ -4925,6 +4937,29 @@ static void direct_link_paint(FileData *fd, Paint **paint) (*paint)->num_input_samples = 1; } +static void direct_link_sequence_modifiers(FileData *fd, ListBase *lb) +{ + SequenceModifierData *smd; + + link_list(fd, lb); + + for (smd = lb->first; smd; smd = smd->next) { + if (smd->mask_sequence) + smd->mask_sequence = newdataadr(fd, smd->mask_sequence); + + if (smd->type == seqModifierType_Curves) { + CurvesModifierData *cmd = (CurvesModifierData *) smd; + + direct_link_curvemapping(fd, &cmd->curve_mapping); + } + else if (smd->type == seqModifierType_HueCorrect) { + HueCorrectModifierData *hcmd = (HueCorrectModifierData *) smd; + + direct_link_curvemapping(fd, &hcmd->curve_mapping); + } + } +} + static void direct_link_scene(FileData *fd, Scene *sce) { Editing *ed; @@ -5037,6 +5072,8 @@ static void direct_link_scene(FileData *fd, Scene *sce) // seq->strip->color_balance->gui = 0; // XXX - peter, is this relevant in 2.5? } } + + direct_link_sequence_modifiers(fd, &seq->modifiers); } SEQ_END |