Revision: 17256
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17256
Author:   aligorith
Date:     2008-11-01 01:17:06 +0100 (Sat, 01 Nov 2008)

Log Message:
-----------
AnimSys2: Bugfix for Insert Key -> Rotation entries not working

Modified Paths:
--------------
    branches/animsys2/source/blender/src/keyframing.c

Modified: branches/animsys2/source/blender/src/keyframing.c
===================================================================
--- branches/animsys2/source/blender/src/keyframing.c   2008-10-31 23:50:02 UTC 
(rev 17255)
+++ branches/animsys2/source/blender/src/keyframing.c   2008-11-01 00:17:06 UTC 
(rev 17256)
@@ -924,11 +924,12 @@
 /* --------- KeyingSet Adrcode Getters ------------ */
 
 /* initialise a channel-getter storage */
-static void ks_adrcodegetter_init (bKS_AdrcodeGetter *kag, bKeyingSet *ks, 
bCommonKeySrc *cks)
+static bKS_AdrcodeGetter *ks_adrcodegetter_init (bKeyingSet *ks, bCommonKeySrc 
*cks)
 {
+       bKS_AdrcodeGetter *kag;
+       
        /* error checking */
-       if (kag == NULL)
-               return;
+       kag= MEM_callocN(sizeof(bKS_AdrcodeGetter), "KAG");
        
        if (ELEM(NULL, ks, cks)) {
                /* set invalid settings that won't cause harm */
@@ -936,8 +937,6 @@
                kag->cks= NULL;
                kag->index= -2;
                kag->tot= 0;
-               
-               return;
        }
        else {
                /* store settings */
@@ -950,6 +949,8 @@
                kag->index= -1;
                kag->tot= ks->chan_num;
        }
+       
+       return kag;
 }
 
 /* 'default' channel-getter that will be used when iterating through 
keyingset's channels 
@@ -1023,7 +1024,8 @@
         *      - otherwise, just keep returning stuff from the keyingset (but 
check out for -1!) 
         */
        kag->index++;
-       if (kag->index < 0) return 0;
+       if (kag->index < 0)
+               return 0;
        
        /* normal (static stuff) */
        if (kag->index < kag->tot) {
@@ -1040,7 +1042,8 @@
         *      - index can be at most 5, if we are to prevent segfaults
         */
        index= kag->index - kag->tot;
-       if (IN_RANGE(index, 0, 5)) return 0;
+       if ((index < 0) || (index > 5))
+               return 0;
        
        if (cks->pchan && cks->pchan->rotmode)
                return eul_adrcodes[index];
@@ -1962,12 +1965,13 @@
                        }
                }
                else {
-                       bKS_AdrcodeGetter kag;
+                       bKS_AdrcodeGetter *kag;
                        short (*get_next_adrcode)(bKS_AdrcodeGetter *);
                        int adrcode;
                        
                        /* initialise keyingset channel iterator */
-                       ks_adrcodegetter_init(&kag, ks, cks);
+                       kag= ks_adrcodegetter_init(ks, cks);
+                       printf("kag = %p \n", kag);
                        
                        /* get iterator - only one can be in use at a time... 
the flags should be mutually exclusive in this regard */
                        if (ks->flag & COMMONKEY_PCHANROT)
@@ -1978,7 +1982,7 @@
                                get_next_adrcode= ks_getnextadrcode_default;
                        
                        /* loop over channels available in keyingset */
-                       for (adrcode= get_next_adrcode(&kag); adrcode > 0; 
adrcode= get_next_adrcode(&kag)) {
+                       for (adrcode= get_next_adrcode(kag); adrcode > 0; 
adrcode= get_next_adrcode(kag)) {
                                short flag;
                                
                                /* insert mode or delete mode */
@@ -2002,6 +2006,9 @@
                                        success += insertkey(cks->id, 
ks->blocktype, cks->actname, cks->constname, adrcode, flag);
                                }
                        }
+                       
+                       /* free keyingset channel iterator */
+                       MEM_freeN(kag);
                }
                
                /* special handling for some key-sources */


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to