@@ -910,15 +910,25 @@ static int freenect_fetch_zero_plane_info(freenect_device *dev)
910
910
}
911
911
912
912
memcpy (& (dev -> registration .zero_plane_info ), reply + 94 , sizeof (dev -> registration .zero_plane_info ));
913
- uint32_t temp ;
914
- temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .dcmos_emitter_dist )));
915
- dev -> registration .zero_plane_info .dcmos_emitter_dist = * ((float * )(& temp ));
916
- temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .dcmos_rcmos_dist )));
917
- dev -> registration .zero_plane_info .dcmos_rcmos_dist = * ((float * )(& temp ));
918
- temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .reference_distance )));
919
- dev -> registration .zero_plane_info .reference_distance = * ((float * )(& temp ));
920
- temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .reference_pixel_size )));
921
- dev -> registration .zero_plane_info .reference_pixel_size = * ((float * )(& temp ));
913
+ union {
914
+ uint32_t ui ;
915
+ float f ;
916
+ } conversion_union ;
917
+ conversion_union .f = dev -> registration .zero_plane_info .dcmos_emitter_dist ;
918
+ conversion_union .ui = fn_le32 (conversion_union .ui );
919
+ dev -> registration .zero_plane_info .dcmos_emitter_dist = conversion_union .f ;
920
+
921
+ conversion_union .f = dev -> registration .zero_plane_info .dcmos_rcmos_dist ;
922
+ conversion_union .ui = fn_le32 (conversion_union .ui );
923
+ dev -> registration .zero_plane_info .dcmos_rcmos_dist = conversion_union .f ;
924
+
925
+ conversion_union .f = dev -> registration .zero_plane_info .reference_distance ;
926
+ conversion_union .ui = fn_le32 (conversion_union .ui );
927
+ dev -> registration .zero_plane_info .reference_distance = conversion_union .f ;
928
+
929
+ conversion_union .f = dev -> registration .zero_plane_info .reference_pixel_size ;
930
+ conversion_union .ui = fn_le32 (conversion_union .ui );
931
+ dev -> registration .zero_plane_info .reference_pixel_size = conversion_union .f ;
922
932
923
933
// WTF is all this data? it's way bigger than sizeof(XnFixedParams)...
924
934
FN_SPEW ("dcmos_emitter_distance: %f\n" , dev -> registration .zero_plane_info .dcmos_emitter_dist );
0 commit comments