Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-08-26 00:16:08 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-08-26 00:16:08 +0400
commita3c4b0f47d1a74fe228f3329de01f774a5e6b65f (patch)
tree7dcc7a5c90ccb04e0c094885eebb4dc3b048c181 /source/blender/blenkernel/intern/curve.c
parent699b23ecdbaa98c78c9a0685253c3a0ee354f194 (diff)
make SWAP macros typesafe using CHECK_TYPE macro.
Its unlikely you want to do short -> int, int -> float etc, conversion during swapping (if its needed we could have a non type checking macro). Double that the optimized assembler outbut using SWAP() remains unchanged from before. This exposed quite a few places where redundant type conversion was going on. Also remove curve.c's swapdata() and replace its use with swap_v3_v3()
Diffstat (limited to 'source/blender/blenkernel/intern/curve.c')
-rw-r--r--source/blender/blenkernel/intern/curve.c38
1 files changed, 10 insertions, 28 deletions
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 664172f2851..a2f88781cbb 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -3047,29 +3047,6 @@ void BKE_nurbList_handles_set(ListBase *editnurb, short code)
}
}
-static void swapdata(void *adr1, void *adr2, int len)
-{
-
- if (len <= 0) return;
-
- if (len < 65) {
- char adr[64];
-
- memcpy(adr, adr1, len);
- memcpy(adr1, adr2, len);
- memcpy(adr2, adr, len);
- }
- else {
- char *adr;
-
- adr = (char *)MEM_mallocN(len, "curve swap");
- memcpy(adr, adr1, len);
- memcpy(adr1, adr2, len);
- memcpy(adr2, adr, len);
- MEM_freeN(adr);
- }
-}
-
void BKE_nurb_direction_switch(Nurb *nu)
{
BezTriple *bezt1, *bezt2;
@@ -3077,7 +3054,9 @@ void BKE_nurb_direction_switch(Nurb *nu)
float *fp1, *fp2, *tempf;
int a, b;
- if (nu->pntsu == 1 && nu->pntsv == 1) return;
+ if (nu->pntsu == 1 && nu->pntsv == 1) {
+ return;
+ }
if (nu->type == CU_BEZIER) {
a = nu->pntsu;
@@ -3086,12 +3065,15 @@ void BKE_nurb_direction_switch(Nurb *nu)
if (a & 1) a += 1; /* if odd, also swap middle content */
a /= 2;
while (a > 0) {
- if (bezt1 != bezt2)
+ if (bezt1 != bezt2) {
SWAP(BezTriple, *bezt1, *bezt2);
+ }
+
+ swap_v3_v3(bezt1->vec[0], bezt1->vec[2]);
- swapdata(bezt1->vec[0], bezt1->vec[2], 12);
- if (bezt1 != bezt2)
- swapdata(bezt2->vec[0], bezt2->vec[2], 12);
+ if (bezt1 != bezt2) {
+ swap_v3_v3(bezt2->vec[0], bezt2->vec[2]);
+ }
SWAP(char, bezt1->h1, bezt1->h2);
SWAP(char, bezt1->f1, bezt1->f3);