[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50684] trunk/blender/source/blender: add endian switching to mask shape key loading ( loading mask animations between big/little endian systems would break), also set attributes to BLI_endian_switch_* functions.
Campbell Barton
ideasman42 at gmail.com
Mon Sep 17 07:31:41 CEST 2012
Revision: 50684
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50684
Author: campbellbarton
Date: 2012-09-17 05:31:41 +0000 (Mon, 17 Sep 2012)
Log Message:
-----------
add endian switching to mask shape key loading (loading mask animations between big/little endian systems would break), also set attributes to BLI_endian_switch_* functions.
Modified Paths:
--------------
trunk/blender/source/blender/blenlib/BLI_endian_switch.h
trunk/blender/source/blender/blenloader/intern/readfile.c
Modified: trunk/blender/source/blender/blenlib/BLI_endian_switch.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_endian_switch.h 2012-09-17 04:29:43 UTC (rev 50683)
+++ trunk/blender/source/blender/blenlib/BLI_endian_switch.h 2012-09-17 05:31:41 UTC (rev 50684)
@@ -27,16 +27,36 @@
* \ingroup bli
*/
-#include "BLI_endian_switch_inline.h"
+#ifdef __GNUC__
+# define ATTR_ENDIAN_SWITCH \
+ __attribute__((nonnull(1))) \
+ __attribute__((pure))
+#else
+# define ATTR_NONULL
+#endif
+/* BLI_endian_switch_inline.h */
+BLI_INLINE void BLI_endian_switch_int16(short *val) ATTR_ENDIAN_SWITCH;
+BLI_INLINE void BLI_endian_switch_uint16(unsigned short *val) ATTR_ENDIAN_SWITCH;
+BLI_INLINE void BLI_endian_switch_int32(int *val) ATTR_ENDIAN_SWITCH;
+BLI_INLINE void BLI_endian_switch_uint32(unsigned int *val) ATTR_ENDIAN_SWITCH;
+BLI_INLINE void BLI_endian_switch_float(float *val) ATTR_ENDIAN_SWITCH;
+BLI_INLINE void BLI_endian_switch_int64(int64_t *val) ATTR_ENDIAN_SWITCH;
+BLI_INLINE void BLI_endian_switch_uint64(uint64_t *val) ATTR_ENDIAN_SWITCH;
+BLI_INLINE void BLI_endian_switch_double(double *val) ATTR_ENDIAN_SWITCH;
+
/* endian_switch.c */
-void BLI_endian_switch_int16_array(short *val, const int size);
-void BLI_endian_switch_uint16_array(unsigned short *val, const int size);
-void BLI_endian_switch_int32_array(int *val, const int size);
-void BLI_endian_switch_uint32_array(unsigned int *val, const int size);
-void BLI_endian_switch_float_array(float *val, const int size);
-void BLI_endian_switch_int64_array(int64_t *val, const int size);
-void BLI_endian_switch_uint64_array(uint64_t *val, const int size);
-void BLI_endian_switch_double_array(double *val, const int size);
+void BLI_endian_switch_int16_array(short *val, const int size) ATTR_ENDIAN_SWITCH;
+void BLI_endian_switch_uint16_array(unsigned short *val, const int size) ATTR_ENDIAN_SWITCH;
+void BLI_endian_switch_int32_array(int *val, const int size) ATTR_ENDIAN_SWITCH;
+void BLI_endian_switch_uint32_array(unsigned int *val, const int size) ATTR_ENDIAN_SWITCH;
+void BLI_endian_switch_float_array(float *val, const int size) ATTR_ENDIAN_SWITCH;
+void BLI_endian_switch_int64_array(int64_t *val, const int size) ATTR_ENDIAN_SWITCH;
+void BLI_endian_switch_uint64_array(uint64_t *val, const int size) ATTR_ENDIAN_SWITCH;
+void BLI_endian_switch_double_array(double *val, const int size) ATTR_ENDIAN_SWITCH;
+#include "BLI_endian_switch_inline.h"
+
+#undef ATTR_ENDIAN_SWITCH
+
#endif /* __BLI_ENDIAN_SWITCH_H__ */
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2012-09-17 04:29:43 UTC (rev 50683)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2012-09-17 05:31:41 UTC (rev 50684)
@@ -6289,6 +6289,14 @@
for (masklay_shape = masklay->splines_shapes.first; masklay_shape; masklay_shape = masklay_shape->next) {
masklay_shape->data = newdataadr(fd, masklay_shape->data);
+
+ if (masklay_shape->tot_vert) {
+ if (fd->flags & FD_FLAGS_SWITCH_ENDIAN) {
+ BLI_endian_switch_float_array(masklay_shape->data,
+ masklay_shape->tot_vert * sizeof(float) * MASK_OBJECT_SHAPE_ELEM_SIZE);
+
+ }
+ }
}
masklay->act_spline = newdataadr(fd, masklay->act_spline);
More information about the Bf-blender-cvs
mailing list