The open source OpenXR runtime
0
fork

Configure Feed

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

st/oxr: Support session lost error in session related APIs

authored by

Jarvis Huang and committed by
Jakob Bornecrantz
7cd1d488 f9d83c8b

+63 -40
+11
src/xrt/state_trackers/oxr/oxr_api_action.c
··· 131 131 struct oxr_session *sess; 132 132 struct oxr_logger log; 133 133 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrSyncActions"); 134 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 134 135 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, syncInfo, XR_TYPE_ACTIONS_SYNC_INFO); 135 136 136 137 if (syncInfo->countActiveActionSets == 0) { ··· 159 160 struct oxr_session *sess; 160 161 struct oxr_logger log; 161 162 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrAttachSessionActionSets"); 163 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 162 164 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, bindInfo, XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO); 163 165 164 166 if (sess->act_set_attachments != NULL) { ··· 403 405 struct oxr_session *sess = NULL; 404 406 struct oxr_logger log; 405 407 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetCurrentInteractionProfile"); 408 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 406 409 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, interactionProfile, XR_TYPE_INTERACTION_PROFILE_STATE); 407 410 408 411 // Short hand. ··· 455 458 struct oxr_session *sess; 456 459 struct oxr_logger log; 457 460 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetInputSourceLocalizedName"); 461 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 458 462 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, getInfo, XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO); 459 463 460 464 // Short hand. ··· 659 663 struct oxr_logger log; 660 664 XrResult ret; 661 665 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetActionStateBoolean"); 666 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 662 667 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, data, XR_TYPE_ACTION_STATE_BOOLEAN); 663 668 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, getInfo, XR_TYPE_ACTION_STATE_GET_INFO); 664 669 OXR_VERIFY_ACTION_NOT_NULL(&log, getInfo->action, act); ··· 687 692 struct oxr_logger log; 688 693 XrResult ret; 689 694 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetActionStateFloat"); 695 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 690 696 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, data, XR_TYPE_ACTION_STATE_FLOAT); 691 697 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, getInfo, XR_TYPE_ACTION_STATE_GET_INFO); 692 698 OXR_VERIFY_ACTION_NOT_NULL(&log, getInfo->action, act); ··· 715 721 struct oxr_logger log; 716 722 XrResult ret; 717 723 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetActionStateVector2f"); 724 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 718 725 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, data, XR_TYPE_ACTION_STATE_VECTOR2F); 719 726 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, getInfo, XR_TYPE_ACTION_STATE_GET_INFO); 720 727 OXR_VERIFY_ACTION_NOT_NULL(&log, getInfo->action, act); ··· 743 750 struct oxr_logger log; 744 751 XrResult ret; 745 752 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetActionStatePose"); 753 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 746 754 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, data, XR_TYPE_ACTION_STATE_POSE); 747 755 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, getInfo, XR_TYPE_ACTION_STATE_GET_INFO); 748 756 OXR_VERIFY_ACTION_NOT_NULL(&log, getInfo->action, act); ··· 773 781 struct oxr_action *act = NULL; 774 782 struct oxr_logger log; 775 783 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrEnumerateBoundSourcesForAction"); 784 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 776 785 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, enumerateInfo, XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO); 777 786 OXR_VERIFY_ACTION_NOT_NULL(&log, enumerateInfo->action, act); 778 787 ··· 806 815 struct oxr_logger log; 807 816 XrResult ret; 808 817 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrApplyHapticFeedback"); 818 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 809 819 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, hapticActionInfo, XR_TYPE_HAPTIC_ACTION_INFO); 810 820 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, hapticEvent, XR_TYPE_HAPTIC_VIBRATION); 811 821 OXR_VERIFY_ACTION_NOT_NULL(&log, hapticActionInfo->action, act); ··· 834 844 struct oxr_logger log; 835 845 XrResult ret; 836 846 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrStopHapticFeedback"); 847 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 837 848 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, hapticActionInfo, XR_TYPE_HAPTIC_ACTION_INFO); 838 849 OXR_VERIFY_ACTION_NOT_NULL(&log, hapticActionInfo->action, act); 839 850
+3
src/xrt/state_trackers/oxr/oxr_api_debug.c
··· 93 93 struct oxr_session *sess; 94 94 struct oxr_logger log; 95 95 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrSessionBeginDebugUtilsLabelRegionEXT"); 96 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 96 97 OXR_VERIFY_EXTENSION(&log, sess->sys->inst, EXT_debug_utils); 97 98 98 99 return oxr_error(&log, XR_ERROR_RUNTIME_FAILURE, " not implemented"); ··· 106 107 struct oxr_session *sess; 107 108 struct oxr_logger log; 108 109 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrSessionEndDebugUtilsLabelRegionEXT"); 110 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 109 111 OXR_VERIFY_EXTENSION(&log, sess->sys->inst, EXT_debug_utils); 110 112 111 113 return oxr_error(&log, XR_ERROR_RUNTIME_FAILURE, " not implemented"); ··· 119 121 struct oxr_session *sess; 120 122 struct oxr_logger log; 121 123 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrSessionInsertDebugUtilsLabelEXT"); 124 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 122 125 OXR_VERIFY_EXTENSION(&log, sess->sys->inst, EXT_debug_utils); 123 126 124 127 return oxr_error(&log, XR_ERROR_RUNTIME_FAILURE, " not implemented");
+25 -2
src/xrt/state_trackers/oxr/oxr_api_session.c
··· 91 91 struct oxr_session *sess; 92 92 struct oxr_logger log; 93 93 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrBeginSession"); 94 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 94 95 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, beginInfo, XR_TYPE_SESSION_BEGIN_INFO); 95 96 OXR_VERIFY_VIEW_CONFIG_TYPE(&log, sess->sys->inst, beginInfo->primaryViewConfigurationType); 97 + 98 + if (sess->has_begun) { 99 + return oxr_error(&log, XR_ERROR_SESSION_RUNNING, "Session is already running"); 100 + } 96 101 97 102 return oxr_session_begin(&log, sess, beginInfo); 98 103 } ··· 105 110 struct oxr_session *sess; 106 111 struct oxr_logger log; 107 112 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrEndSession"); 113 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 114 + OXR_VERIFY_SESSION_RUNNING(&log, sess); 108 115 109 116 return oxr_session_end(&log, sess); 110 117 } ··· 117 124 struct oxr_session *sess; 118 125 struct oxr_logger log; 119 126 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrWaitFrame"); 127 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 128 + OXR_VERIFY_SESSION_RUNNING(&log, sess); 120 129 OXR_VERIFY_ARG_TYPE_CAN_BE_NULL(&log, frameWaitInfo, XR_TYPE_FRAME_WAIT_INFO); 121 130 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, frameState, XR_TYPE_FRAME_STATE); 122 131 OXR_VERIFY_ARG_NOT_NULL(&log, frameState); ··· 132 141 struct oxr_session *sess; 133 142 struct oxr_logger log; 134 143 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrBeginFrame"); 144 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 145 + OXR_VERIFY_SESSION_RUNNING(&log, sess); 135 146 // NULL explicitly allowed here because it's a basically empty struct. 136 147 OXR_VERIFY_ARG_TYPE_CAN_BE_NULL(&log, frameBeginInfo, XR_TYPE_FRAME_BEGIN_INFO); 137 148 ··· 154 165 struct oxr_session *sess; 155 166 struct oxr_logger log; 156 167 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrEndFrame"); 168 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 169 + OXR_VERIFY_SESSION_RUNNING(&log, sess); 157 170 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, frameEndInfo, XR_TYPE_FRAME_END_INFO); 158 171 159 172 #ifdef XRT_FEATURE_RENDERDOC ··· 175 188 struct oxr_session *sess; 176 189 struct oxr_logger log; 177 190 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrRequestExitSession"); 191 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 192 + OXR_VERIFY_SESSION_RUNNING(&log, sess); 178 193 179 194 return oxr_session_request_exit(&log, sess); 180 195 } ··· 193 208 struct oxr_space *spc; 194 209 struct oxr_logger log; 195 210 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrLocateViews"); 211 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 196 212 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, viewLocateInfo, XR_TYPE_VIEW_LOCATE_INFO); 197 213 OXR_VERIFY_SPACE_NOT_NULL(&log, viewLocateInfo->space, spc); 198 214 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, viewState, XR_TYPE_VIEW_STATE); ··· 251 267 struct oxr_session *sess; 252 268 struct oxr_logger log; 253 269 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetVisibilityMaskKHR"); 270 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 254 271 255 272 return oxr_error(&log, XR_ERROR_HANDLE_INVALID, "Not implemented"); 256 273 } ··· 276 293 struct oxr_session *sess; 277 294 struct oxr_logger log; 278 295 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrPerfSettingsSetPerformanceLevelEXT"); 296 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 279 297 280 298 return oxr_error(&log, XR_ERROR_HANDLE_INVALID, "Not implemented"); 281 299 } ··· 303 321 struct oxr_session *sess; 304 322 struct oxr_logger log; 305 323 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrThermalGetTemperatureTrendEXT"); 324 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 306 325 307 326 return oxr_error(&log, XR_ERROR_HANDLE_INVALID, "Not implemented"); 308 327 } ··· 391 410 struct oxr_logger log; 392 411 XrResult ret; 393 412 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrCreateHandTrackerEXT"); 413 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 394 414 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, createInfo, XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT); 395 415 OXR_VERIFY_ARG_NOT_NULL(&log, handTracker); 396 416 ··· 433 453 struct oxr_space *spc; 434 454 struct oxr_logger log; 435 455 OXR_VERIFY_HAND_TRACKER_AND_INIT_LOG(&log, handTracker, hand_tracker, "xrLocateHandJointsEXT"); 456 + OXR_VERIFY_SESSION_NOT_LOST(&log, hand_tracker->sess); 436 457 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, locateInfo, XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT); 437 458 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, locations, XR_TYPE_HAND_JOINT_LOCATIONS_EXT); 438 459 OXR_VERIFY_ARG_NOT_NULL(&log, locations->jointLocations); ··· 515 536 struct oxr_session *sess = NULL; 516 537 struct oxr_logger log; 517 538 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrEnumerateDisplayRefreshRatesFB"); 539 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 518 540 519 541 // headless 520 542 if (!sess->sys->xsysc) { ··· 531 553 { 532 554 struct oxr_session *sess = NULL; 533 555 struct oxr_logger log; 534 - OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrEnumerateDisplayRefreshRatesFB"); 556 + OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetDisplayRefreshRateFB"); 557 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 535 558 536 559 // headless 537 560 if (!sess->sys->xsysc) { ··· 539 562 return XR_SUCCESS; 540 563 } 541 564 542 - OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrGetDisplayRefreshRateFB"); 543 565 if (sess->sys->xsysc->info.num_refresh_rates < 1) { 544 566 return XR_ERROR_RUNTIME_FAILURE; 545 567 } ··· 554 576 struct oxr_session *sess = NULL; 555 577 struct oxr_logger log; 556 578 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrRequestDisplayRefreshRateFB"); 579 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 557 580 558 581 //! @todo support for changing refresh rates 559 582 return XR_SUCCESS;
+3
src/xrt/state_trackers/oxr/oxr_api_space.c
··· 36 36 struct oxr_action *act; 37 37 struct oxr_logger log; 38 38 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrCreateActionSpace"); 39 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 39 40 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, createInfo, XR_TYPE_ACTION_SPACE_CREATE_INFO); 40 41 OXR_VERIFY_POSE(&log, createInfo->poseInActionSpace); 41 42 OXR_VERIFY_ACTION_NOT_NULL(&log, createInfo->action, act); ··· 112 113 struct oxr_space *spc = NULL; 113 114 struct oxr_logger log; 114 115 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrCreateReferenceSpace"); 116 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 115 117 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, createInfo, XR_TYPE_REFERENCE_SPACE_CREATE_INFO); 116 118 OXR_VERIFY_POSE(&log, createInfo->poseInReferenceSpace); 117 119 ··· 134 136 struct oxr_space *baseSpc; 135 137 struct oxr_logger log; 136 138 OXR_VERIFY_SPACE_AND_INIT_LOG(&log, space, spc, "xrLocateSpace"); 139 + OXR_VERIFY_SESSION_NOT_LOST(&log, spc->sess); 137 140 OXR_VERIFY_SPACE_NOT_NULL(&log, baseSpace, baseSpc); 138 141 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, location, XR_TYPE_SPACE_LOCATION); 139 142
+6
src/xrt/state_trackers/oxr/oxr_api_swapchain.c
··· 36 36 struct oxr_session *sess; 37 37 struct oxr_logger log; 38 38 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrEnumerateSwapchainFormats"); 39 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 39 40 40 41 return oxr_session_enumerate_formats(&log, sess, formatCapacityInput, formatCountOutput, formats); 41 42 } ··· 50 51 struct oxr_swapchain *sc; 51 52 struct oxr_logger log; 52 53 OXR_VERIFY_SESSION_AND_INIT_LOG(&log, session, sess, "xrCreateSwapchain"); 54 + OXR_VERIFY_SESSION_NOT_LOST(&log, sess); 53 55 if (sess->compositor == NULL) { 54 56 return oxr_error(&log, XR_ERROR_VALIDATION_FAILURE, "Is illegal in headless sessions"); 55 57 } ··· 134 136 struct oxr_swapchain *sc; 135 137 struct oxr_logger log; 136 138 OXR_VERIFY_SWAPCHAIN_AND_INIT_LOG(&log, swapchain, sc, "xrEnumerateSwapchainImages"); 139 + OXR_VERIFY_SESSION_NOT_LOST(&log, sc->sess); 137 140 struct xrt_swapchain *xsc = sc->swapchain; 138 141 139 142 if (imageCountOutput != NULL) { ··· 157 160 struct oxr_swapchain *sc; 158 161 struct oxr_logger log; 159 162 OXR_VERIFY_SWAPCHAIN_AND_INIT_LOG(&log, swapchain, sc, "xrAcquireSwapchainImage"); 163 + OXR_VERIFY_SESSION_NOT_LOST(&log, sc->sess); 160 164 OXR_VERIFY_ARG_TYPE_CAN_BE_NULL(&log, acquireInfo, XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO); 161 165 OXR_VERIFY_ARG_NOT_NULL(&log, index); 162 166 ··· 171 175 struct oxr_swapchain *sc; 172 176 struct oxr_logger log; 173 177 OXR_VERIFY_SWAPCHAIN_AND_INIT_LOG(&log, swapchain, sc, "xrWaitSwapchainImage"); 178 + OXR_VERIFY_SESSION_NOT_LOST(&log, sc->sess); 174 179 OXR_VERIFY_ARG_TYPE_AND_NOT_NULL(&log, waitInfo, XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO); 175 180 176 181 return sc->wait_image(&log, sc, waitInfo); ··· 184 189 struct oxr_swapchain *sc; 185 190 struct oxr_logger log; 186 191 OXR_VERIFY_SWAPCHAIN_AND_INIT_LOG(&log, swapchain, sc, "xrReleaseSwapchainImage"); 192 + OXR_VERIFY_SESSION_NOT_LOST(&log, sc->sess); 187 193 OXR_VERIFY_ARG_TYPE_CAN_BE_NULL(&log, releaseInfo, XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO); 188 194 189 195 return sc->release_image(&log, sc, releaseInfo);
+14
src/xrt/state_trackers/oxr/oxr_api_verify.h
··· 207 207 } \ 208 208 } while (false) 209 209 210 + #define OXR_VERIFY_SESSION_NOT_LOST(log, sess) \ 211 + do { \ 212 + if (sess->has_lost) { \ 213 + return oxr_error(log, XR_ERROR_SESSION_LOST, "Session is lost"); \ 214 + } \ 215 + } while (false) 216 + 217 + #define OXR_VERIFY_SESSION_RUNNING(log, sess) \ 218 + do { \ 219 + if (!sess->has_begun) { \ 220 + return oxr_error(log, XR_ERROR_SESSION_NOT_RUNNING, "Session is not running"); \ 221 + } \ 222 + } while (false) 223 + 210 224 /* 211 225 * 212 226 * Implementation in oxr_verify.cpp
-27
src/xrt/state_trackers/oxr/oxr_session.c
··· 57 57 } 58 58 59 59 static bool 60 - is_running(struct oxr_session *sess) 61 - { 62 - return sess->has_begun; 63 - } 64 - 65 - static bool 66 60 should_render(XrSessionState state) 67 61 { 68 62 switch (state) { ··· 137 131 XrResult 138 132 oxr_session_begin(struct oxr_logger *log, struct oxr_session *sess, const XrSessionBeginInfo *beginInfo) 139 133 { 140 - if (is_running(sess)) { 141 - return oxr_error(log, XR_ERROR_SESSION_RUNNING, "Session is already running"); 142 - } 143 - 144 134 struct xrt_compositor *xc = sess->compositor; 145 135 if (xc != NULL) { 146 136 XrViewConfigurationType view_type = beginInfo->primaryViewConfigurationType; ··· 171 161 } 172 162 173 163 struct xrt_compositor *xc = sess->compositor; 174 - 175 - if (!is_running(sess)) { 176 - return oxr_error(log, XR_ERROR_SESSION_NOT_RUNNING, "Session is not running"); 177 - } 178 164 if (sess->state != XR_SESSION_STATE_STOPPING) { 179 165 return oxr_error(log, XR_ERROR_SESSION_NOT_STOPPING, "Session is not stopping"); 180 166 } ··· 208 194 XrResult 209 195 oxr_session_request_exit(struct oxr_logger *log, struct oxr_session *sess) 210 196 { 211 - if (!is_running(sess)) { 212 - return oxr_error(log, XR_ERROR_SESSION_NOT_RUNNING, "Session is not running"); 213 - } 214 - 215 197 if (sess->state == XR_SESSION_STATE_FOCUSED) { 216 198 oxr_session_change_state(log, sess, XR_SESSION_STATE_VISIBLE, 0); 217 199 } ··· 483 465 XrResult 484 466 oxr_session_frame_wait(struct oxr_logger *log, struct oxr_session *sess, XrFrameState *frameState) 485 467 { 486 - if (!is_running(sess)) { 487 - return oxr_error(log, XR_ERROR_SESSION_NOT_RUNNING, "Session is not running"); 488 - } 489 - 490 - 491 468 //! @todo this should be carefully synchronized, because there may be 492 469 //! more than one session per instance. 493 470 XRT_MAYBE_UNUSED timepoint_ns now = time_state_get_now_and_update(sess->sys->inst->timekeeping); ··· 553 530 XrResult 554 531 oxr_session_frame_begin(struct oxr_logger *log, struct oxr_session *sess) 555 532 { 556 - if (!is_running(sess)) { 557 - return oxr_error(log, XR_ERROR_SESSION_NOT_RUNNING, "Session is not running"); 558 - } 559 - 560 533 struct xrt_compositor *xc = sess->compositor; 561 534 562 535 os_mutex_lock(&sess->active_wait_frames_lock);
+1 -11
src/xrt/state_trackers/oxr/oxr_session_frame_end.c
··· 63 63 return ns_to_ms(monotonic); 64 64 } 65 65 66 - static bool 67 - is_session_running(struct oxr_session *sess) 68 - { 69 - return sess->has_begun; 70 - } 71 - 72 66 static XrResult 73 67 is_rect_neg(const XrRect2Di *imageRect) 74 68 { ··· 1254 1248 oxr_session_frame_end(struct oxr_logger *log, struct oxr_session *sess, const XrFrameEndInfo *frameEndInfo) 1255 1249 { 1256 1250 /* 1257 - * Session state and call order. 1251 + * Call order. 1258 1252 */ 1259 - 1260 - if (!is_session_running(sess)) { 1261 - return oxr_error(log, XR_ERROR_SESSION_NOT_RUNNING, "Session is not running"); 1262 - } 1263 1253 1264 1254 if (!sess->frame_started) { 1265 1255 return oxr_error(log, XR_ERROR_CALL_ORDER_INVALID, "Frame not begun with xrBeginFrame");