diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-10-09 23:49:09 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-10-09 23:49:09 +0400 |
commit | ccd2e4375a3a8d1338d15d00193ff56da63809c3 (patch) | |
tree | ac7f83b460a6e11cfce59918f801a8903510da0f /extern/libmv/libmv-capi.cc | |
parent | 9aeced47114793112f0228ae216926d6f689280c (diff) |
Fix compilation error after recent libmv change
- Tweaked typedefs in stdint so they match
what we've got in BLI_sys_types (needed to
explicitly tell sign to MSVC).
Not so much harmful to be more explicit here,
but we really better to have single stdint
int blender.
- Tweaked allocations macros so MSVC is happy
with structures allocation.
Diffstat (limited to 'extern/libmv/libmv-capi.cc')
-rw-r--r-- | extern/libmv/libmv-capi.cc | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/extern/libmv/libmv-capi.cc b/extern/libmv/libmv-capi.cc index a7509fd6b45..717c54acd85 100644 --- a/extern/libmv/libmv-capi.cc +++ b/extern/libmv/libmv-capi.cc @@ -43,12 +43,17 @@ # include <png.h> #endif +#if defined(_MSC_VER) +# define __func__ __FUNCTION__ +#endif + #ifdef WITH_LIBMV_GUARDED_ALLOC # include "MEM_guardedalloc.h" # define LIBMV_OBJECT_NEW OBJECT_GUARDED_NEW # define LIBMV_OBJECT_DELETE OBJECT_GUARDED_DELETE # define LIBMV_OBJECT_DELETE OBJECT_GUARDED_DELETE -# define LIBMV_OBJECT_DELETE_ARRAY OBJECT_GUARDED_DELETE_ARRAY +# define LIBMV_STRUCT_NEW(type, count) (type*)MEM_mallocN(sizeof(type) * count, __func__) +# define LIBMV_STRUCT_DELETE(what) MEM_freeN(what) #else // Need this to keep libmv-capi potentially standalone. # if defined __GNUC__ || defined __sun @@ -63,11 +68,8 @@ ((type*)(what))->~type(); \ free(what); \ } } (void)0 -#define LIBMV_OBJECT_DELETE_ARRAY(what, type, count) \ - { if(what) { \ - for (int i = 0; i < count; i++) ((type*)(what))[i].~type(); \ - free(what); \ - } } (void)0 +# define LIBMV_STRUCT_NEW(type, count) (type*)malloc(sizeof(type) * count) +# define LIBMV_STRUCT_DELETE(what) { if (what) free(what); } (void)0 #endif #include "libmv/logging/logging.h" @@ -875,7 +877,7 @@ struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data, { libmv::Feature *features = NULL; std::vector<libmv::Feature> v; - struct libmv_Features *libmv_features = LIBMV_OBJECT_NEW(libmv_Features); + struct libmv_Features *libmv_features = LIBMV_STRUCT_NEW(libmv_Features, 1); int i = 0, count; if (margin) { @@ -889,7 +891,7 @@ struct libmv_Features *libmv_detectFeaturesFAST(const unsigned char *data, count = v.size(); if (count) { - features = LIBMV_OBJECT_NEW(libmv::Feature[count]); + features = LIBMV_STRUCT_NEW(libmv::Feature, count); for(std::vector<libmv::Feature>::iterator it = v.begin(); it != v.end(); it++) { features[i++] = *it; @@ -908,7 +910,7 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, int margin, int count, int min_distance) { libmv::Feature *features = NULL; - struct libmv_Features *libmv_features = LIBMV_OBJECT_NEW(libmv_Features); + struct libmv_Features *libmv_features = LIBMV_STRUCT_NEW(libmv_Features, 1); if (count) { if (margin) { @@ -917,7 +919,7 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, height -= 2 * margin; } - features = LIBMV_OBJECT_NEW(libmv::Feature[count]); + features = LIBMV_STRUCT_NEW(libmv::Feature, count); libmv::DetectMORAVEC(data, stride, width, height, features, &count, min_distance, NULL); } @@ -931,11 +933,10 @@ struct libmv_Features *libmv_detectFeaturesMORAVEC(const unsigned char *data, void libmv_featuresDestroy(struct libmv_Features *libmv_features) { if (libmv_features->features) { - using libmv::Feature; - LIBMV_OBJECT_DELETE_ARRAY(libmv_features->features, Feature, libmv_features->count); + LIBMV_STRUCT_DELETE(libmv_features->features); } - LIBMV_OBJECT_DELETE(libmv_features, libmv_Features); + LIBMV_STRUCT_DELETE(libmv_features); } int libmv_countFeatures(const struct libmv_Features *libmv_features) |