[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17256] branches/animsys2/source/blender/ src/keyframing.c: AnimSys2: Bugfix for Insert Key -> Rotation entries not working
Joshua Leung
aligorith at gmail.com
Sat Nov 1 01:17:07 CET 2008
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 */
More information about the Bf-blender-cvs
mailing list