The open source OpenXR runtime
0
fork

Configure Feed

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

d/simulated: Support reference space usage printing

+32
+32
src/xrt/drivers/simulated/simulated_hmd.c
··· 20 20 #include "util/u_debug.h" 21 21 #include "util/u_device.h" 22 22 #include "util/u_logging.h" 23 + #include "util/u_pretty_print.h" 23 24 #include "util/u_distortion_mesh.h" 24 25 25 26 #include "simulated_interface.h" ··· 69 70 70 71 #define DH_TRACE(p, ...) U_LOG_XDEV_IFL_T(&dh->base, dh->log_level, __VA_ARGS__) 71 72 #define DH_DEBUG(p, ...) U_LOG_XDEV_IFL_D(&dh->base, dh->log_level, __VA_ARGS__) 73 + #define DH_INFO(p, ...) U_LOG_XDEV_IFL_I(&dh->base, dh->log_level, __VA_ARGS__) 72 74 #define DH_ERROR(p, ...) U_LOG_XDEV_IFL_E(&dh->base, dh->log_level, __VA_ARGS__) 73 75 74 76 static void ··· 160 162 out_poses); 161 163 } 162 164 165 + static xrt_result_t 166 + simulated_ref_space_usage(struct xrt_device *xdev, 167 + enum xrt_reference_space_type type, 168 + enum xrt_input_name name, 169 + bool used) 170 + { 171 + struct simulated_hmd *dh = simulated_hmd(xdev); 172 + 173 + struct u_pp_sink_stack_only sink; 174 + u_pp_delegate_t dg = u_pp_sink_stack_only_init(&sink); 175 + 176 + u_pp(dg, "Ref space "); 177 + u_pp_xrt_reference_space_type(dg, type); 178 + u_pp(dg, " is %sused", used ? "" : "not "); 179 + 180 + if (name != 0) { 181 + u_pp(dg, ", driven by "); 182 + u_pp_xrt_input_name(dg, name); 183 + u_pp(dg, "."); 184 + } else { 185 + u_pp(dg, ", not controlled by us."); 186 + } 187 + 188 + DH_INFO(dh, "%s", sink.buffer); 189 + 190 + return XRT_SUCCESS; 191 + } 192 + 163 193 164 194 /* 165 195 * ··· 182 212 dh->base.update_inputs = simulated_hmd_update_inputs; 183 213 dh->base.get_tracked_pose = simulated_hmd_get_tracked_pose; 184 214 dh->base.get_view_poses = simulated_hmd_get_view_poses; 215 + dh->base.ref_space_usage = simulated_ref_space_usage; 185 216 dh->base.destroy = simulated_hmd_destroy; 186 217 dh->base.name = XRT_DEVICE_GENERIC_HMD; 187 218 dh->base.device_type = XRT_DEVICE_TYPE_HMD; 219 + dh->base.ref_space_usage_supported = true; 188 220 dh->pose.orientation.w = 1.0f; // All other values set to zero. 189 221 dh->center = *center; 190 222 dh->created_ns = os_monotonic_get_ns();