[Bf-blender-cvs] [1a1b51f] HMD_viewport: Fall back to return unit matrix

Julian Eisel noreply at git.blender.org
Fri Oct 28 23:13:24 CEST 2016


Commit: 1a1b51f329e9fa2050c1628b5f7135d08cc16b4b
Author: Julian Eisel
Date:   Fri Oct 28 23:11:20 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rB1a1b51f329e9fa2050c1628b5f7135d08cc16b4b

Fall back to return unit matrix

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

M	intern/ghost/intern/GHOST_C-api.cpp
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/windowmanager/intern/wm_device.c

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

diff --git a/intern/ghost/intern/GHOST_C-api.cpp b/intern/ghost/intern/GHOST_C-api.cpp
index c58cc5c..920d71d 100644
--- a/intern/ghost/intern/GHOST_C-api.cpp
+++ b/intern/ghost/intern/GHOST_C-api.cpp
@@ -1024,6 +1024,15 @@ void GHOST_HMDsetDeviceIPD(float value)
 #endif
 }
 
+static void ghost_UnitMat(float r_mat[4][4])
+{
+	r_mat[0][0] = r_mat[1][1] = r_mat[2][2] = r_mat[3][3] = 1.0f;
+	r_mat[0][1] = r_mat[0][2] = r_mat[0][3] = 0.0f;
+	r_mat[1][0] = r_mat[1][2] = r_mat[1][3] = 0.0f;
+	r_mat[2][0] = r_mat[2][1] = r_mat[2][3] = 0.0f;
+	r_mat[3][0] = r_mat[3][1] = r_mat[3][2] = 0.0f;
+}
+
 void GHOST_HMDgetLeftModelviewMatrix(float r_mat[4][4])
 {
 #ifdef WITH_OPENHMD
@@ -1031,7 +1040,7 @@ void GHOST_HMDgetLeftModelviewMatrix(float r_mat[4][4])
 	GHOST_OpenHMDManager *ohmd = system->getOpenHMDManager();
 	ohmd->getLeftEyeGLModelviewMatrix(r_mat);
 #else
-	(void)r_mat;
+	ghost_UnitMat(r_mat);
 #endif
 }
 
@@ -1042,7 +1051,7 @@ void GHOST_HMDgetRightModelviewMatrix(float r_mat[4][4])
 	GHOST_OpenHMDManager *ohmd = system->getOpenHMDManager();
 	ohmd->getRightEyeGLModelviewMatrix(r_mat);
 #else
-	(void)r_mat;
+	ghost_UnitMat(r_mat);
 #endif
 }
 
@@ -1053,7 +1062,7 @@ void GHOST_HMDgetLeftProjectionMatrix(float r_mat[4][4])
 	GHOST_OpenHMDManager *ohmd = system->getOpenHMDManager();
 	ohmd->getLeftEyeGLProjectionMatrix(r_mat);
 #else
-	(void)r_mat;
+	ghost_UnitMat(r_mat);
 #endif
 }
 
@@ -1064,7 +1073,7 @@ void GHOST_HMDgetRightProjectionMatrix(float r_mat[4][4])
 	GHOST_OpenHMDManager *ohmd = system->getOpenHMDManager();
 	ohmd->getRightEyeGLProjectionMatrix(r_mat);
 #else
-	(void)r_mat;
+	ghost_UnitMat(r_mat);
 #endif
 }
 
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 4b264ac..850d946 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -3628,7 +3628,7 @@ static bool view3d_stereo3d_active(const bContext *C, Scene *scene, View3D *v3d,
 
 static bool view3d_hmd_view_active(wmWindowManager *wm, wmWindow *win, Scene *scene)
 {
-	return (wm->win_hmd == win && (scene->hmd_settings.flag & HMDVIEW_SESSION_RUNNING));
+	return (wm->win_hmd == win && (scene->hmd_settings.flag & HMDVIEW_SESSION_RUNNING) && (U.hmd_device > -1));
 }
 
 static void view3d_hmd_view_setup(Scene *scene, View3D *v3d, ARegion *ar)
diff --git a/source/blender/windowmanager/intern/wm_device.c b/source/blender/windowmanager/intern/wm_device.c
index b1f8f5c..399930a 100644
--- a/source/blender/windowmanager/intern/wm_device.c
+++ b/source/blender/windowmanager/intern/wm_device.c
@@ -30,6 +30,8 @@
 
 #include "BKE_context.h"
 
+#include "BLI_math.h"
+
 #include "DNA_userdef_types.h"
 
 #include "GHOST_C-api.h"
@@ -105,7 +107,7 @@ void WM_device_HMD_state_set(const int device, const bool enable)
 void WM_device_HMD_modelview_matrix_get(const bool is_left, float r_modelviewmat[4][4])
 {
 	if (U.hmd_device == -1) {
-		r_modelviewmat = NULL;
+		unit_m4(r_modelviewmat);
 	}
 	else if (is_left) {
 		GHOST_HMDgetLeftModelviewMatrix(r_modelviewmat);
@@ -118,7 +120,7 @@ void WM_device_HMD_modelview_matrix_get(const bool is_left, float r_modelviewmat
 void WM_device_HMD_projection_matrix_get(const bool is_left, float r_projmat[4][4])
 {
 	if (U.hmd_device == -1) {
-		r_projmat = NULL;
+		unit_m4(r_projmat);
 	}
 	else if (is_left) {
 		GHOST_HMDgetLeftProjectionMatrix(r_projmat);




More information about the Bf-blender-cvs mailing list