diff options
author | Peter Schlaile <peter@schlaile.de> | 2008-01-29 15:26:42 +0300 |
---|---|---|
committer | Peter Schlaile <peter@schlaile.de> | 2008-01-29 15:26:42 +0300 |
commit | fd9db17021064552cdecbcfadce4255257d71e17 (patch) | |
tree | b1013efbb7e91797be1c8e2c6466affb4edae051 /source/blender/src/sequence.c | |
parent | 8e94028ed57861595e959d30476a74c48868a991 (diff) |
== Sequencer ==
This fixes several crashes with the new tstripdata_start/endstill.
dupli_seq was cleaned up as well as add_scene_strip (moved to a
seperate function)
New features:
* opacity can be used in replace blend mode
* the scene within in a scene track can be changed now within the panel
Also:
* [#7842] Note: setCodec in FormatTab disappeared...
should be fixed by this. (Not a big change, so I just commit and see :)
http://peter.schlaile.de/blender/sequencer/codec_buttons.diff
Diffstat (limited to 'source/blender/src/sequence.c')
-rw-r--r-- | source/blender/src/sequence.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/source/blender/src/sequence.c b/source/blender/src/sequence.c index e10d78abd89..003c2c0e491 100644 --- a/source/blender/src/sequence.c +++ b/source/blender/src/sequence.c @@ -401,8 +401,10 @@ void reload_sequence_new_file(Sequence * seq) return; } - strncpy(str, seq->strip->dir, FILE_MAXDIR-1); - strncat(str, seq->strip->stripdata->name, FILE_MAXFILE-1); + if (seq->type != SEQ_SCENE) { + strncpy(str, seq->strip->dir, FILE_MAXDIR-1); + strncat(str, seq->strip->stripdata->name, FILE_MAXFILE-1); + } if (seq->type == SEQ_MOVIE) { if(seq->anim) IMB_free_anim(seq->anim); @@ -433,6 +435,23 @@ void reload_sequence_new_file(Sequence * seq) seq->strip->len = seq->len = sound_hdaudio_get_duration(seq->hdaudio, FPS); } else if (seq->type == SEQ_SCENE) { + Scene * sce = G.main->scene.first; + int nr = 1; + while(sce) { + if(nr == seq->scenenr) { + break; + } + nr++; + sce= sce->id.next; + } + + if (sce) { + seq->scene = sce; + } + + strncpy(seq->name + 2, sce->id.name + 2, + sizeof(seq->name) - 2); + seq->len= seq->scene->r.efra - seq->scene->r.sfra + 1; seq->len -= seq->anim_startofs; seq->len -= seq->anim_endofs; @@ -849,7 +868,7 @@ TStripElem *give_tstripelem(Sequence *seq, int cfra) se->nr= nr; - + return se; } @@ -1085,11 +1104,14 @@ static void input_preprocess(Sequence * seq, TStripElem* se, int cfra) mul = seq->mul; - if(seq->blend_mode == SEQ_BLEND_REPLACE - && seq->ipo && seq->ipo->curve.first) { - do_seq_ipo(seq, cfra); - mul *= seq->facf0; + if(seq->blend_mode == SEQ_BLEND_REPLACE) { + if (seq->ipo && seq->ipo->curve.first) { + do_seq_ipo(seq, cfra); + mul *= seq->facf0; + } + mul *= seq->blend_opacity / 100.0; } + if(mul != 1.0) { multibuf(se->ibuf, mul); } |