OVR: Exit on request from OVR server
authorAndreas Eversberg <jolly@eversberg.eu>
Sun, 26 May 2019 07:07:10 +0000 (09:07 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Sun, 26 May 2019 07:07:10 +0000 (09:07 +0200)
src/libovr/ovr.c
src/libovr/ovr.h
src/mercenary/main.c

index c5f75b0..df019f8 100755 (executable)
@@ -463,6 +463,18 @@ void reset_observer_ovr(void)
        hand_z_reset = -observer_z;
 }
 
+int should_quit_ovr(void)
+{
+       ovrSessionStatus sessionStatus;
+       ovrResult result;
+
+       result = ovr_GetSessionStatus(session, &sessionStatus);
+
+       if (OVR_SUCCESS(result))
+               return sessionStatus.ShouldQuit;
+       return 0;
+}
+
 void exit_ovr(void)
 {
        int eye;
index 6480216..653e664 100755 (executable)
@@ -8,4 +8,5 @@ void end_render_ovr_eye(int eye);
 void end_render_ovr(void);
 void render_mirror_ovr(int view_width, int view_height);
 void reset_observer_ovr(void);
+int should_quit_ovr(void);
 
index 8229642..8b66015 100644 (file)
@@ -770,6 +770,9 @@ static void main_loop(void)
        /* render result on window */
        while (!quit) {
 #ifdef HAVE_OVR
+               /* quit by OVR server */
+               if (should_quit_ovr())
+                       break;
                /* get vr poses */
                handle_vr_poses();
 #endif