diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-06-24 22:01:38 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-06-24 22:04:52 +0400 |
commit | df1c400420b39506e38745bb0db3d4f9797de424 (patch) | |
tree | 11ffd31924f8b69f6149c55e89a76819b1eceb52 /source | |
parent | 04648767fabda7d9461e32c89afcd806d0227547 (diff) |
Use gnu-libc arg order for BLI_sort_r
When building on gnu-libc don't use our own implementation.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/navmesh_conversion.c | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/particle_system.c | 2 | ||||
-rw-r--r-- | source/blender/blenlib/BLI_sort.h | 8 | ||||
-rw-r--r-- | source/blender/blenlib/intern/sort.c | 7 |
4 files changed, 15 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/navmesh_conversion.c b/source/blender/blenkernel/intern/navmesh_conversion.c index 64d59b165e1..8ab9cdd41e7 100644 --- a/source/blender/blenkernel/intern/navmesh_conversion.c +++ b/source/blender/blenkernel/intern/navmesh_conversion.c @@ -305,7 +305,7 @@ struct SortContext { const int *trisToFacesMap; }; -static int compareByData(void *ctx, const void *a, const void *b) +static int compareByData(const void *a, const void *b, void *ctx) { return (((struct SortContext *)ctx)->recastData[((struct SortContext *)ctx)->trisToFacesMap[*(int *)a]] - ((struct SortContext *)ctx)->recastData[((struct SortContext *)ctx)->trisToFacesMap[*(int *)b]]); diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c index 665bf2a85a9..1cc89d5f3fa 100644 --- a/source/blender/blenkernel/intern/particle_system.c +++ b/source/blender/blenkernel/intern/particle_system.c @@ -1011,7 +1011,7 @@ static void *distribute_threads_exec_cb(void *data) return 0; } -static int distribute_compare_orig_index(void *user_data, const void *p1, const void *p2) +static int distribute_compare_orig_index(const void *p1, const void *p2, void *user_data) { int *orig_index = (int *) user_data; int index1 = orig_index[*(const int *)p1]; diff --git a/source/blender/blenlib/BLI_sort.h b/source/blender/blenlib/BLI_sort.h index 4df17d98a4b..0108ae19872 100644 --- a/source/blender/blenlib/BLI_sort.h +++ b/source/blender/blenlib/BLI_sort.h @@ -33,8 +33,14 @@ * \ingroup bli */ +#include <stdlib.h> + +#ifdef __GLIBC__ +# define BLI_qsort_r qsort_r +#endif + /* Quick sort reentrant */ -typedef int (*BLI_sort_cmp_t)(void *ctx, const void *a, const void *b); +typedef int (*BLI_sort_cmp_t)(const void *a, const void *b, void *ctx); void BLI_qsort_r(void *a, size_t n, size_t es, void *thunk, BLI_sort_cmp_t cmp) #ifdef __GNUC__ diff --git a/source/blender/blenlib/intern/sort.c b/source/blender/blenlib/intern/sort.c index a1b7296feb6..991337446cf 100644 --- a/source/blender/blenlib/intern/sort.c +++ b/source/blender/blenlib/intern/sort.c @@ -32,10 +32,13 @@ #include <stdlib.h> +#ifndef __GLIBC__ + #include "BLI_utildefines.h" #include "BLI_sort.h" +/* note: modified to use glibc arg order for callback */ /* **** qsort based on FreeBSD source (libkern\qsort.c) **** */ BLI_INLINE char *med3(char *, char *, char *, BLI_sort_cmp_t, void *); BLI_INLINE void swapfunc(char *, char *, int, int); @@ -72,7 +75,7 @@ BLI_INLINE void swapfunc(char *a, char *b, int n, int swaptype) swapfunc(a, b, es, swaptype) #define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype) -#define CMP(t, x, y) (cmp((t), (x), (y))) +#define CMP(t, x, y) (cmp((x), (y), (t))) BLI_INLINE char *med3(char *a, char *b, char *c, BLI_sort_cmp_t cmp, void *thunk) { @@ -171,3 +174,5 @@ loop: goto loop; } } + +#endif /* __GLIBC__ */ |