From 919e5baba8a258eecd9e56009055f5b4e753ab83 Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Wed, 17 Oct 2007 08:23:08 +0000 Subject: IPO-Transform Bugfix: Peach/ideasman_42 report... After transforming sequence IPO's, there were occasional crashes. --- source/blender/src/transform_conversions.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'source/blender') diff --git a/source/blender/src/transform_conversions.c b/source/blender/src/transform_conversions.c index 9520aa7b976..2f030a4a394 100644 --- a/source/blender/src/transform_conversions.c +++ b/source/blender/src/transform_conversions.c @@ -2738,7 +2738,7 @@ void special_aftertrans_update(TransInfo *t) { Object *ob; Base *base; - int redrawipo=0; + short redrawipo=0, resetslowpar=1; int cancelled= (t->state == TRANS_CANCEL); if(t->spacetype == SPACE_ACTION) { @@ -2783,13 +2783,20 @@ void special_aftertrans_update(TransInfo *t) } else if(t->spacetype == SPACE_NLA) { synchronize_action_strips(); - + /* cleanup */ for (base=G.scene->base.first; base; base=base->next) base->flag &= ~(BA_HAS_RECALC_OB|BA_HAS_RECALC_DATA); recalc_all_ipos(); // bad } + else if(t->spacetype == SPACE_IPO) { + // FIXME! is there any code from the old transform_ipo that needs to be added back? + + /* resetting slow-parents isn't really necessary when editing sequence ipo's */ + if (G.sipo->blocktype==ID_SEQ) + resetslowpar= 0; + } else if(G.obedit) { if(t->mode==TFM_BONESIZE || t->mode==TFM_BONE_ENVELOPE) allqueue(REDRAWBUTSEDIT, 0); @@ -2839,7 +2846,7 @@ void special_aftertrans_update(TransInfo *t) if(t->mode==TFM_BONESIZE || t->mode==TFM_BONE_ENVELOPE) allqueue(REDRAWBUTSEDIT, 0); - + } else { base= FIRSTBASE; @@ -2869,7 +2876,8 @@ void special_aftertrans_update(TransInfo *t) allqueue(REDRAWIPO, 0); } - reset_slowparents(); + if(resetslowpar) + reset_slowparents(); /* note; should actually only be done for all objects when a lamp is moved... (ton) */ if(t->spacetype==SPACE_VIEW3D && G.vd->drawtype == OB_SHADED) -- cgit v1.2.3