- listener for sequencer space panels added for frame changes, now redraws during transform

- invalid pointer was used for getting the sequencer length crashing blender or setting the length to negative values.
- printf_strip(seq) for debugging sequence strip locations
- Spelling: Cheet Sheet -> Cheat Sheet
This commit is contained in:
Campbell Barton
2009-10-19 10:07:19 +00:00
parent 8802bea7a0
commit 2c985dee97
6 changed files with 53 additions and 23 deletions

View File

@@ -287,7 +287,7 @@ class HELP_OT_user_community(HelpOperator):
class HELP_OT_operator_cheat_sheet(bpy.types.Operator): class HELP_OT_operator_cheat_sheet(bpy.types.Operator):
__idname__ = "help.operator_cheat_sheet" __idname__ = "help.operator_cheat_sheet"
__label__ = "Operator Cheet Sheet (new textblock)" __label__ = "Operator Cheat Sheet (new textblock)"
def execute(self, context): def execute(self, context):
op_strings = [] op_strings = []
tot = 0 tot = 0

View File

@@ -135,6 +135,7 @@ struct SeqEffectHandle {
/* ********************* prototypes *************** */ /* ********************* prototypes *************** */
/* sequence.c */ /* sequence.c */
void printf_strip(struct Sequence *seq);
// extern // extern
void seq_free_sequence(struct Scene *scene, struct Sequence *seq); void seq_free_sequence(struct Scene *scene, struct Sequence *seq);

View File

@@ -69,6 +69,13 @@ static int blender_test_break() {return 0;}
/* **** XXX ******** */ /* **** XXX ******** */
void printf_strip(Sequence *seq)
{
fprintf(stderr, "name: '%s', len:%d, start:%d, (startofs:%d, endofs:%d), (startstill:%d, endstill:%d), machine:%d, (startdisp:%d, enddisp:%d)\n",
seq->name, seq->len, seq->start, seq->startofs, seq->endofs, seq->startstill, seq->endstill, seq->machine, seq->startdisp, seq->enddisp);
fprintf(stderr, "\tseq_tx_set_final_left: %d %d\n\n", seq_tx_get_final_left(seq, 0), seq_tx_get_final_right(seq, 0));
}
/* ********************************************************************** /* **********************************************************************
alloc / free functions alloc / free functions
********************************************************************** */ ********************************************************************** */
@@ -3238,7 +3245,7 @@ void seq_tx_set_final_left(Sequence *seq, int val)
{ {
if (val < (seq)->start) { if (val < (seq)->start) {
seq->startstill = abs(val - (seq)->start); seq->startstill = abs(val - (seq)->start);
(seq)->startofs = 0; seq->startofs = 0;
} else { } else {
seq->startofs = abs(val - (seq)->start); seq->startofs = abs(val - (seq)->start);
seq->startstill = 0; seq->startstill = 0;
@@ -3249,7 +3256,7 @@ void seq_tx_set_final_right(Sequence *seq, int val)
{ {
if (val > (seq)->start + (seq)->len) { if (val > (seq)->start + (seq)->len) {
seq->endstill = abs(val - (seq->start + (seq)->len)); seq->endstill = abs(val - (seq->start + (seq)->len));
(seq)->endofs = 0; seq->endofs = 0;
} else { } else {
seq->endofs = abs(val - ((seq)->start + (seq)->len)); seq->endofs = abs(val - ((seq)->start + (seq)->len));
seq->endstill = 0; seq->endstill = 0;

View File

@@ -245,6 +245,14 @@ static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn)
{ {
/* context changes */ /* context changes */
switch(wmn->category) { switch(wmn->category) {
case NC_SCENE:
switch(wmn->data) {
case ND_FRAME:
case ND_SEQUENCER:
ED_region_tag_redraw(ar);
break;
}
break;
case NC_SPACE: case NC_SPACE:
if(wmn->data == ND_SPACE_SEQUENCER) if(wmn->data == ND_SPACE_SEQUENCER)
ED_region_tag_redraw(ar); ED_region_tag_redraw(ar);

View File

@@ -4015,38 +4015,52 @@ static int SeqToTransData_Recursive(TransInfo *t, ListBase *seqbase, TransData *
static void freeSeqData(TransInfo *t) static void freeSeqData(TransInfo *t)
{ {
Editing *ed= seq_give_editing(t->scene, FALSE); Editing *ed= seq_give_editing(t->scene, FALSE);
if (ed && !(t->state == TRANS_CANCEL)) {
ListBase *seqbasep= ed->seqbasep;
Sequence *seq;
int a; if(ed != NULL) {
ListBase *seqbasep= ed->seqbasep;
TransData *td= t->data; TransData *td= t->data;
int a;
/* prevent updating the same seq twice /* prevent updating the same seq twice
* if the transdata order is changed this will mess up * if the transdata order is changed this will mess up
* but so will TransDataSeq */ * but so will TransDataSeq */
Sequence *seq_prev= NULL; Sequence *seq_prev= NULL;
Sequence *seq;
/* flush to 2d vector from internally used 3d vector */
for(a=0; a<t->total; a++, td++) { if (!(t->state == TRANS_CANCEL)) {
seq= ((TransDataSeq *)td->extra)->seq;
if ((seq != seq_prev) && (seq->depth==0) && (seq->flag & SEQ_OVERLAP)) { /* flush to 2d vector from internally used 3d vector */
shuffle_seq(seqbasep, seq); for(a=0; a<t->total; a++, td++) {
seq= ((TransDataSeq *)td->extra)->seq;
if ((seq != seq_prev) && (seq->depth==0) && (seq->flag & SEQ_OVERLAP)) {
shuffle_seq(seqbasep, seq);
}
seq_prev= seq;
} }
seq_prev= seq; for(seq= seqbasep->first; seq; seq= seq->next) {
} /* We might want to build a list of effects that need to be updated during transform */
if(seq->type & SEQ_EFFECT) {
if (seq->seq1 && seq->seq1->flag & SELECT) calc_sequence(seq);
else if (seq->seq2 && seq->seq2->flag & SELECT) calc_sequence(seq);
else if (seq->seq3 && seq->seq3->flag & SELECT) calc_sequence(seq);
}
}
for(seq= seqbasep->first; seq; seq= seq->next) { sort_seq(t->scene);
/* We might want to build a list of effects that need to be updated during transform */ }
if(seq->type & SEQ_EFFECT) { else {
if (seq->seq1 && seq->seq1->flag & SELECT) calc_sequence(seq); /* Cancelled, need to update the strips display */
else if (seq->seq2 && seq->seq2->flag & SELECT) calc_sequence(seq); for(a=0; a<t->total; a++, td++) {
else if (seq->seq3 && seq->seq3->flag & SELECT) calc_sequence(seq); seq= ((TransDataSeq *)td->extra)->seq;
if ((seq != seq_prev) && (seq->depth==0)) {
calc_sequence_disp(seq);
}
seq_prev= seq;
} }
} }
sort_seq(t->scene);
} }
if (t->customData) { if (t->customData) {

View File

@@ -85,7 +85,7 @@ static void rna_SequenceEditor_length_set(PointerRNA *ptr, int value)
static int rna_SequenceEditor_length_get(PointerRNA *ptr) static int rna_SequenceEditor_length_get(PointerRNA *ptr)
{ {
Sequence *seq= (Sequence*)ptr->data; Sequence *seq= (Sequence*)ptr->data;
return seq_tx_get_final_right(seq, 1)-seq_tx_get_final_left(seq, 1); return seq_tx_get_final_right(seq, 0)-seq_tx_get_final_left(seq, 0);
} }
static void rna_SequenceEditor_channel_set(PointerRNA *ptr, int value) static void rna_SequenceEditor_channel_set(PointerRNA *ptr, int value)