Revision: 22129
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22129
Author:   aligorith
Date:     2009-08-02 05:15:24 +0200 (Sun, 02 Aug 2009)

Log Message:
-----------
2.5 - Fixes for crashes when moving keyframes in F-Curve channels

Modified Paths:
--------------
    
branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c

Modified: 
branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
   2009-08-02 01:00:15 UTC (rev 22128)
+++ 
branches/blender2.5/blender/source/blender/editors/transform/transform_generics.c
   2009-08-02 03:15:24 UTC (rev 22129)
@@ -271,29 +271,35 @@
  */
 static void animedit_refresh_id_tags (ID *id)
 {
-       AnimData *adt= BKE_animdata_from_id(id);
-       
-       /* tag AnimData for refresh so that other views will update in realtime 
with these changes */
-       if (adt)
-               adt->recalc |= ADT_RECALC_ANIM;
+       if (id) {
+               AnimData *adt= BKE_animdata_from_id(id);
                
-       /* if ID-block is Object, set recalc flags */
-       // TODO: this should probably go through the depsgraph instead... but 
for now, let's be lazy
-       switch (GS(id->name)) {
-               case ID_OB:
-               {
-                       Object *ob= (Object *)id;
-                       ob->recalc |= OB_RECALC;
+               /* tag AnimData for refresh so that other views will update in 
realtime with these changes */
+               if (adt)
+                       adt->recalc |= ADT_RECALC_ANIM;
+                       
+               /* if ID-block is Object, set recalc flags */
+               // TODO: this should probably go through the depsgraph 
instead... but for now, let's be lazy
+               switch (GS(id->name)) {
+                       case ID_OB:
+                       {
+                               Object *ob= (Object *)id;
+                               ob->recalc |= OB_RECALC;
+                       }
+                               break;
                }
-                       break;
        }
 }
 
 /* for the realtime animation recording feature, handle overlapping data */
 static void animrecord_check_state (Scene *scene, ID *id, wmTimer *animtimer)
 {
-       ScreenAnimData *sad= animtimer->customdata;
+       ScreenAnimData *sad= (animtimer) ? animtimer->customdata : NULL;
        
+       /* sanity checks */
+       if ELEM3(NULL, scene, id, sad)
+               return;
+       
        /* check if we need a new strip if:
         *      - if animtimer is running 
         *      - we're not only keying for available channels
@@ -301,7 +307,7 @@
         */
        if (IS_AUTOKEY_FLAG(INSERTAVAIL)==0 && 
(scene->toolsettings->autokey_flag & ANIMRECORD_FLAG_WITHNLA)) {
                /* if playback has just looped around, we need to add a new NLA 
track+strip to allow a clean pass to occur */
-               if (sad->flag & ANIMPLAY_FLAG_JUMPED) {
+               if ((sad) && (sad->flag & ANIMPLAY_FLAG_JUMPED)) {
                        AnimData *adt= BKE_animdata_from_id(id);
                        
                        /* perform push-down manually with some differences 
@@ -351,7 +357,7 @@
                flushTransSeq(t);
        }
        else if (t->spacetype == SPACE_ACTION) {
-               Scene *scene;
+               Scene *scene= t->scene;
                
                bAnimContext ac;
                ListBase anim_data = {NULL, NULL};
@@ -362,7 +368,7 @@
                        /* NOTE: sync this with the code in 
ANIM_animdata_get_context() */
                memset(&ac, 0, sizeof(bAnimContext));
                
-               scene= ac.scene= t->scene;
+               ac.scene= t->scene;
                ac.obact= OBACT;
                ac.sa= t->sa;
                ac.ar= t->ar;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to