diff options
Diffstat (limited to 'source/blender/editors/space_sequencer/sequencer_edit.c')
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_edit.c | 48 |
1 files changed, 24 insertions, 24 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index d3d2fd7e220..d1654dc5d37 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -43,19 +43,13 @@ #include "BLI_storage_types.h" -#include "DNA_ipo_types.h" #include "DNA_scene_types.h" #include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_global.h" -#include "BKE_image.h" -#include "BKE_library.h" #include "BKE_main.h" -#include "BKE_plugin_types.h" #include "BKE_sequencer.h" -#include "BKE_scene.h" -#include "BKE_utildefines.h" #include "BKE_report.h" #include "BKE_sound.h" @@ -621,7 +615,7 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen for(seq=ed->seqbasep->first; seq; seq=seq->next) { if(seq->flag & SELECT) { - if (seq->type == SEQ_SOUND) { + if (seq->type == SEQ_SOUND && get_sequence_effect_num_inputs(type) != 0) { *error_str= "Can't apply effects to audio sequence strips"; return 0; } @@ -725,8 +719,9 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de while(seq) { seqn= seq->next; if((seq->flag & flag) || deleteall) { - if(seq->type==SEQ_SOUND && seq->sound) - seq->sound->id.us--; + if(seq->type==SEQ_SOUND && seq->sound) { + ((ID *)seq->sound)->us--; /* TODO, could be moved into seq_free_sequence() */ + } BLI_remlink(lb, seq); if(seq==last_seq) seq_active_set(scene, NULL); @@ -740,7 +735,7 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de } -static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) +static Sequence *cut_seq_hard(Main *bmain, Scene *scene, Sequence * seq, int cutframe) { TransSeq ts; Sequence *seqn = 0; @@ -787,8 +782,9 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) } } - reload_sequence_new_file(scene, seq, FALSE); + reload_sequence_new_file(bmain, scene, seq, FALSE); calc_sequence(scene, seq); + new_tstripdata(seq); if (!skip_dup) { /* Duplicate AFTER the first change */ @@ -826,13 +822,14 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) seqn->startstill = 0; } - reload_sequence_new_file(scene, seqn, FALSE); + reload_sequence_new_file(bmain, scene, seqn, FALSE); calc_sequence(scene, seqn); + new_tstripdata(seqn); } return seqn; } -static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) +static Sequence *cut_seq_soft(Main *bmain, Scene *scene, Sequence * seq, int cutframe) { TransSeq ts; Sequence *seqn = 0; @@ -878,6 +875,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) } calc_sequence(scene, seq); + new_tstripdata(seq); if (!skip_dup) { /* Duplicate AFTER the first change */ @@ -913,6 +911,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) } calc_sequence(scene, seqn); + new_tstripdata(seqn); } return seqn; } @@ -920,8 +919,8 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) /* like duplicate, but only duplicate and cut overlapping strips, * strips to the left of the cutframe are ignored and strips to the right are moved into the new list */ -static int cut_seq_list(Scene *scene, ListBase *old, ListBase *new, int cutframe, - Sequence * (*cut_seq)(Scene *, Sequence *, int)) +static int cut_seq_list(Main *bmain, Scene *scene, ListBase *old, ListBase *new, int cutframe, + Sequence * (*cut_seq)(Main *, Scene *, Sequence *, int)) { int did_something = FALSE; Sequence *seq, *seq_next; @@ -935,7 +934,7 @@ static int cut_seq_list(Scene *scene, ListBase *old, ListBase *new, int cutframe if(seq->flag & SELECT) { if(cutframe > seq->startdisp && cutframe < seq->enddisp) { - Sequence * seqn = cut_seq(scene, seq, cutframe); + Sequence * seqn = cut_seq(bmain, scene, seq, cutframe); if (seqn) { BLI_addtail(new, seqn); } @@ -1005,7 +1004,7 @@ void touch_seq_files(Scene *scene) waitcursor(0); } -void set_filter_seq(Scene *scene) +void set_filter_seq(Main *bmain, Scene *scene) { Sequence *seq; Editing *ed= seq_give_editing(scene, FALSE); @@ -1019,7 +1018,7 @@ void set_filter_seq(Scene *scene) if(seq->flag & SELECT) { if(seq->type==SEQ_MOVIE) { seq->flag |= SEQ_FILTERY; - reload_sequence_new_file(scene, seq, FALSE); + reload_sequence_new_file(bmain, scene, seq, FALSE); calc_sequence(scene, seq); } @@ -1415,7 +1414,7 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - free_imbuf_seq(scene, &ed->seqbase, FALSE); + free_imbuf_seq(scene, &ed->seqbase, FALSE, FALSE); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); @@ -1507,6 +1506,7 @@ static EnumPropertyItem prop_cut_types[] = { static int sequencer_cut_exec(bContext *C, wmOperator *op) { + Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); int cut_side, cut_hard, cut_frame; @@ -1521,10 +1521,10 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op) newlist.first= newlist.last= NULL; if (cut_hard==SEQ_CUT_HARD) { - changed = cut_seq_list(scene, + changed = cut_seq_list(bmain, scene, ed->seqbasep, &newlist, cut_frame, cut_seq_hard); } else { - changed = cut_seq_list(scene, + changed = cut_seq_list(bmain, scene, ed->seqbasep, &newlist, cut_frame, cut_seq_soft); } @@ -2157,7 +2157,7 @@ static int sequencer_view_zoom_ratio_exec(bContext *C, wmOperator *op) float facx= (v2d->mask.xmax - v2d->mask.xmin) / winx; float facy= (v2d->mask.ymax - v2d->mask.ymin) / winy; - BLI_resize_rctf(&v2d->cur, winx*facx*ratio, winy*facy*ratio); + BLI_resize_rctf(&v2d->cur, (int)(winx*facx*ratio) + 1, (int)(winy*facy*ratio) + 1); ED_region_tag_redraw(CTX_wm_region(C)); @@ -2416,9 +2416,9 @@ void SEQUENCER_OT_previous_edit(wmOperatorType *ot) static void swap_sequence(Scene* scene, Sequence* seqa, Sequence* seqb) { int gap = seqb->startdisp - seqa->enddisp; - seqb->start = seqa->start; + seqb->start = (seqb->start - seqb->startdisp) + seqa->startdisp; calc_sequence(scene, seqb); - seqa->start = seqb->enddisp + gap; + seqa->start = (seqa->start - seqa->startdisp) + seqb->enddisp + gap; calc_sequence(scene, seqa); } |