From 191fe7a59fcf1c01f5bd21b47e4e71050c6ef5bc Mon Sep 17 00:00:00 2001 From: Christoph Haag Date: Wed, 18 Nov 2020 22:33:50 +0100 Subject: [PATCH] st/oxr: Add verification of XrHandJointVelocitiesEXT --- src/xrt/state_trackers/oxr/oxr_api_session.c | 25 +++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/xrt/state_trackers/oxr/oxr_api_session.c b/src/xrt/state_trackers/oxr/oxr_api_session.c index 47dc33a46..2ce1fe86d 100644 --- a/src/xrt/state_trackers/oxr/oxr_api_session.c +++ b/src/xrt/state_trackers/oxr/oxr_api_session.c @@ -23,7 +23,7 @@ #include "oxr_api_funcs.h" #include "oxr_api_verify.h" #include "oxr_handle.h" - +#include "oxr_chain.h" XrResult oxr_xrCreateSession(XrInstance instance, @@ -380,6 +380,29 @@ oxr_xrLocateHandJointsEXT(XrHandTrackerEXT handTracker, } }; + XrHandJointVelocitiesEXT *vel = OXR_GET_OUTPUT_FROM_CHAIN( + locations, XR_TYPE_HAND_JOINT_VELOCITIES_EXT, + XrHandJointVelocitiesEXT); + if (vel) { + if (vel->jointCount <= 0) { + return oxr_error(&log, XR_ERROR_VALIDATION_FAILURE, + "XrHandJointVelocitiesEXT joint count " + "must be >0, is %d\n", + vel->jointCount); + } + if (hand_tracker->hand_joint_set == + XR_HAND_JOINT_SET_DEFAULT_EXT) { + if (vel->jointCount != XR_HAND_JOINT_COUNT_EXT) { + return oxr_error( + &log, XR_ERROR_VALIDATION_FAILURE, + "XrHandJointVelocitiesEXT joint count must " + "be %d, not %d\n", + XR_HAND_JOINT_COUNT_EXT, + locations->jointCount); + } + } + } + return oxr_session_hand_joints(&log, hand_tracker, locateInfo, locations); }