The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

a/math: Make sure it's safe to pass in the result as either left or right

+34 -20
+3 -3
src/xrt/auxiliary/math/m_api.h
··· 316 316 void 317 317 math_matrix_2x2_multiply(const struct xrt_matrix_2x2 *left, 318 318 const struct xrt_matrix_2x2 *right, 319 - struct xrt_matrix_2x2 *result); 319 + struct xrt_matrix_2x2 *result_out); 320 320 321 321 void 322 322 math_matrix_3x3_transform_vec3(const struct xrt_matrix_3x3 *left, 323 323 const struct xrt_vec3 *right, 324 - struct xrt_vec3 *result); 324 + struct xrt_vec3 *result_out); 325 325 326 326 /*! 327 327 * Multiply Matrix3x3. ··· 332 332 void 333 333 math_matrix_3x3_multiply(const struct xrt_matrix_3x3 *left, 334 334 const struct xrt_matrix_3x3 *right, 335 - struct xrt_matrix_3x3 *result); 335 + struct xrt_matrix_3x3 *result_out); 336 336 337 337 /*! 338 338 * Invert Matrix3x3
+31 -17
src/xrt/auxiliary/math/m_base.cpp
··· 349 349 void 350 350 math_matrix_2x2_multiply(const struct xrt_matrix_2x2 *left, 351 351 const struct xrt_matrix_2x2 *right, 352 - struct xrt_matrix_2x2 *result) 352 + struct xrt_matrix_2x2 *result_out) 353 353 { 354 - result->v[0] = left->v[0] * right->v[0] + left->v[1] * right->v[2]; 355 - result->v[1] = left->v[0] * right->v[1] + left->v[1] * right->v[3]; 356 - result->v[2] = left->v[2] * right->v[0] + left->v[3] * right->v[2]; 357 - result->v[3] = left->v[2] * right->v[1] + left->v[3] * right->v[3]; 354 + const struct xrt_matrix_2x2 l = *left; 355 + const struct xrt_matrix_2x2 r = *right; 356 + 357 + struct xrt_matrix_2x2 result = {{ 358 + l.v[0] * r.v[0] + l.v[1] * r.v[2], 359 + l.v[0] * r.v[1] + l.v[1] * r.v[3], 360 + l.v[2] * r.v[0] + l.v[3] * r.v[2], 361 + l.v[2] * r.v[1] + l.v[3] * r.v[3], 362 + }}; 363 + 364 + *result_out = result; 358 365 } 359 366 360 367 extern "C" void 361 - math_matrix_3x3_transform_vec3(const struct xrt_matrix_3x3 *left, const struct xrt_vec3 *right, struct xrt_vec3 *result) 368 + math_matrix_3x3_transform_vec3(const struct xrt_matrix_3x3 *left, 369 + const struct xrt_vec3 *right, 370 + struct xrt_vec3 *result_out) 362 371 { 363 372 Eigen::Matrix3f m; 364 373 m << left->v[0], left->v[1], left->v[2], // 1 365 374 left->v[3], left->v[4], left->v[5], // 2 366 375 left->v[6], left->v[7], left->v[8]; // 3 367 376 368 - map_vec3(*result) = m * copy(right); 377 + map_vec3(*result_out) = m * copy(right); 369 378 } 370 379 371 380 extern "C" void 372 381 math_matrix_3x3_multiply(const struct xrt_matrix_3x3 *left, 373 382 const struct xrt_matrix_3x3 *right, 374 - struct xrt_matrix_3x3 *result) 383 + struct xrt_matrix_3x3 *result_out) 375 384 { 376 - result->v[0] = left->v[0] * right->v[0] + left->v[1] * right->v[3] + left->v[2] * right->v[6]; 377 - result->v[1] = left->v[0] * right->v[1] + left->v[1] * right->v[4] + left->v[2] * right->v[7]; 378 - result->v[2] = left->v[0] * right->v[2] + left->v[1] * right->v[5] + left->v[2] * right->v[8]; 385 + const struct xrt_matrix_3x3 l = *left; 386 + const struct xrt_matrix_3x3 r = *right; 379 387 380 - result->v[3] = left->v[3] * right->v[0] + left->v[4] * right->v[3] + left->v[5] * right->v[6]; 381 - result->v[4] = left->v[3] * right->v[1] + left->v[4] * right->v[4] + left->v[5] * right->v[7]; 382 - result->v[5] = left->v[3] * right->v[2] + left->v[4] * right->v[5] + left->v[5] * right->v[8]; 388 + struct xrt_matrix_3x3 result = {{ 389 + l.v[0] * r.v[0] + l.v[1] * r.v[3] + l.v[2] * r.v[6], 390 + l.v[0] * r.v[1] + l.v[1] * r.v[4] + l.v[2] * r.v[7], 391 + l.v[0] * r.v[2] + l.v[1] * r.v[5] + l.v[2] * r.v[8], 392 + l.v[3] * r.v[0] + l.v[4] * r.v[3] + l.v[5] * r.v[6], 393 + l.v[3] * r.v[1] + l.v[4] * r.v[4] + l.v[5] * r.v[7], 394 + l.v[3] * r.v[2] + l.v[4] * r.v[5] + l.v[5] * r.v[8], 395 + l.v[6] * r.v[0] + l.v[7] * r.v[3] + l.v[8] * r.v[6], 396 + l.v[6] * r.v[1] + l.v[7] * r.v[4] + l.v[8] * r.v[7], 397 + l.v[6] * r.v[2] + l.v[7] * r.v[5] + l.v[8] * r.v[8], 398 + }}; 383 399 384 - result->v[6] = left->v[6] * right->v[0] + left->v[7] * right->v[3] + left->v[8] * right->v[6]; 385 - result->v[7] = left->v[6] * right->v[1] + left->v[7] * right->v[4] + left->v[8] * right->v[7]; 386 - result->v[8] = left->v[6] * right->v[2] + left->v[7] * right->v[5] + left->v[8] * right->v[8]; 400 + *result_out = result; 387 401 } 388 402 389 403 extern "C" void