forked from bartvdbraak/blender
fix [#27671] Transforming sequencer effects strips crashes
This commit is contained in:
parent
f227c4a064
commit
216ba20942
@ -3725,27 +3725,8 @@ void flushTransGraphData(TransInfo *t)
|
|||||||
* seq->depth must be set before running this function so we know if the strips
|
* seq->depth must be set before running this function so we know if the strips
|
||||||
* are root level or not
|
* are root level or not
|
||||||
*/
|
*/
|
||||||
#define XXX_DURIAN_ANIM_TX_HACK
|
|
||||||
static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count, int *flag)
|
static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count, int *flag)
|
||||||
{
|
{
|
||||||
|
|
||||||
#ifdef XXX_DURIAN_ANIM_TX_HACK
|
|
||||||
/* hack */
|
|
||||||
if((seq->flag & SELECT)==0 && seq->type & SEQ_EFFECT) {
|
|
||||||
Sequence *seq_t[3];
|
|
||||||
int i;
|
|
||||||
|
|
||||||
seq_t[0]= seq->seq1;
|
|
||||||
seq_t[1]= seq->seq2;
|
|
||||||
seq_t[2]= seq->seq3;
|
|
||||||
|
|
||||||
for(i=0; i<3; i++) {
|
|
||||||
if (seq_t[i] && ((seq_t[i])->flag & SELECT) && !(seq_t[i]->flag & SEQ_LOCK) && !(seq_t[i]->flag & (SEQ_LEFTSEL|SEQ_RIGHTSEL)))
|
|
||||||
seq->flag |= SELECT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* for extend we need to do some tricks */
|
/* for extend we need to do some tricks */
|
||||||
if (t->mode == TFM_TIME_EXTEND) {
|
if (t->mode == TFM_TIME_EXTEND) {
|
||||||
|
|
||||||
@ -4105,6 +4086,7 @@ static void freeSeqData(TransInfo *t)
|
|||||||
|
|
||||||
static void createTransSeqData(bContext *C, TransInfo *t)
|
static void createTransSeqData(bContext *C, TransInfo *t)
|
||||||
{
|
{
|
||||||
|
#define XXX_DURIAN_ANIM_TX_HACK
|
||||||
|
|
||||||
View2D *v2d= UI_view2d_fromcontext(C);
|
View2D *v2d= UI_view2d_fromcontext(C);
|
||||||
Scene *scene= t->scene;
|
Scene *scene= t->scene;
|
||||||
@ -4135,6 +4117,24 @@ static void createTransSeqData(bContext *C, TransInfo *t)
|
|||||||
t->frame_side = 'B';
|
t->frame_side = 'B';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef XXX_DURIAN_ANIM_TX_HACK
|
||||||
|
{
|
||||||
|
Sequence *seq;
|
||||||
|
for(seq= ed->seqbasep->first; seq; seq= seq->next) {
|
||||||
|
/* hack */
|
||||||
|
if((seq->flag & SELECT)==0 && seq->type & SEQ_EFFECT) {
|
||||||
|
Sequence *seq_user;
|
||||||
|
int i;
|
||||||
|
for(i=0; i<3; i++) {
|
||||||
|
seq_user= *((&seq->seq1) + i);
|
||||||
|
if (seq_user && (seq_user->flag & SELECT) && !(seq_user->flag & SEQ_LOCK) && !(seq_user->flag & (SEQ_LEFTSEL|SEQ_RIGHTSEL))) {
|
||||||
|
seq->flag |= SELECT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
count = SeqTransCount(t, ed->seqbasep, 0);
|
count = SeqTransCount(t, ed->seqbasep, 0);
|
||||||
|
|
||||||
@ -4154,6 +4154,8 @@ static void createTransSeqData(bContext *C, TransInfo *t)
|
|||||||
|
|
||||||
/* loop 2: build transdata array */
|
/* loop 2: build transdata array */
|
||||||
SeqToTransData_Recursive(t, ed->seqbasep, td, td2d, tdsq);
|
SeqToTransData_Recursive(t, ed->seqbasep, td, td2d, tdsq);
|
||||||
|
|
||||||
|
#undef XXX_DURIAN_ANIM_TX_HACK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user