[Bf-blender-cvs] [ba223dfac83] soc-2019-openxr: Exit OpenXR context/session gracefully if the runtime reports loss pending

Julian Eisel noreply at git.blender.org
Thu Aug 8 00:04:17 CEST 2019


Commit: ba223dfac83111ca5f7a428fc475b9155870bd5f
Author: Julian Eisel
Date:   Wed Aug 7 23:45:41 2019 +0200
Branches: soc-2019-openxr
https://developer.blender.org/rBba223dfac83111ca5f7a428fc475b9155870bd5f

Exit OpenXR context/session gracefully if the runtime reports loss pending

Handle XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING and
XR_SESSION_STATE_LOSS_PENDING according to the specification.

===================================================================

M	intern/ghost/intern/GHOST_XrEvent.cpp
M	intern/ghost/intern/GHOST_XrSession.cpp

===================================================================

diff --git a/intern/ghost/intern/GHOST_XrEvent.cpp b/intern/ghost/intern/GHOST_XrEvent.cpp
index 0b625e84f3f..8234bfe07cf 100644
--- a/intern/ghost/intern/GHOST_XrEvent.cpp
+++ b/intern/ghost/intern/GHOST_XrEvent.cpp
@@ -50,6 +50,9 @@ GHOST_TSuccess GHOST_XrEventsHandle(GHOST_XrContextHandle xr_contexthandle)
         xr_context->handleSessionStateChange((XrEventDataSessionStateChanged *)event);
         return GHOST_kSuccess;
 
+      case XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING:
+        GHOST_XrContextDestroy(xr_contexthandle);
+        return GHOST_kSuccess;
       default:
         XR_DEBUG_PRINTF(xr_context, "Unhandled event: %i\n", event->type);
         return GHOST_kFailure;
diff --git a/intern/ghost/intern/GHOST_XrSession.cpp b/intern/ghost/intern/GHOST_XrSession.cpp
index a3772348569..e8bd4eac917 100644
--- a/intern/ghost/intern/GHOST_XrSession.cpp
+++ b/intern/ghost/intern/GHOST_XrSession.cpp
@@ -218,6 +218,7 @@ GHOST_XrSession::eLifeExpectancy GHOST_XrSession::handleStateChangeEvent(
       end();
       break;
     case XR_SESSION_STATE_EXITING:
+    case XR_SESSION_STATE_LOSS_PENDING:
       return SESSION_DESTROY;
     default:
       break;



More information about the Bf-blender-cvs mailing list