The open source OpenXR runtime

st/oxr: Use xrt_device_is_form_factor_available

authored by

Jarvis Huang and committed by
Jakob Bornecrantz
5380b6c1 693641b7

+16
+16
src/xrt/state_trackers/oxr/oxr_system.c
··· 25 25 26 26 DEBUG_GET_ONCE_NUM_OPTION(scale_percentage, "OXR_VIEWPORT_SCALE_PERCENTAGE", 100) 27 27 28 + static enum xrt_form_factor 29 + convert_form_factor(XrFormFactor form_factor) 30 + { 31 + switch (form_factor) { 32 + case XR_FORM_FACTOR_HANDHELD_DISPLAY: return XRT_FORM_FACTOR_HANDHELD; 33 + case XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY: return XRT_FORM_FACTOR_HMD; 34 + default: return XRT_FORM_FACTOR_HMD; 35 + } 36 + } 28 37 29 38 static bool 30 39 oxr_system_matches(struct oxr_logger *log, struct oxr_system *sys, XrFormFactor form_factor) ··· 57 66 "(getInfo->formFactor) no matching system " 58 67 "(given: %i, first: %i)", 59 68 form_factor, systems[0]->form_factor); 69 + } 70 + 71 + struct xrt_device *xdev = GET_XDEV_BY_ROLE(selected, head); 72 + if (xdev->form_factor_check_supported && 73 + !xrt_device_is_form_factor_available(xdev, convert_form_factor(form_factor))) { 74 + return oxr_error(log, XR_ERROR_FORM_FACTOR_UNAVAILABLE, "request form factor %i is unavailable now", 75 + form_factor); 60 76 } 61 77 62 78 *out_selected = selected;