[Bf-blender-cvs] [9d9db8f] HMD_viewport: Fix checkbox for getting IPD from device always disabled while no HMD session runs

Julian Eisel noreply at git.blender.org
Tue Oct 11 18:55:09 CEST 2016


Commit: 9d9db8f748bd8c9bb3fdd6777a0e61f16a450a5a
Author: Julian Eisel
Date:   Tue Oct 11 18:41:26 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rB9d9db8f748bd8c9bb3fdd6777a0e61f16a450a5a

Fix checkbox for getting IPD from device always disabled while no HMD session runs

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

M	source/blender/blenloader/intern/versioning_270.c
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index d5cb0c2..9c9d8eb 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -1430,7 +1430,7 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 		if (!DNA_struct_elem_find(fd->filesdna, "Scene", "HMDViewSettings", "hmd_settings")) {
 			for (Scene *scene = main->scene.first; scene; scene = scene->id.next) {
 				scene->hmd_settings.view_shade = OB_MATERIAL;
-				scene->hmd_settings.flag |= HMDVIEW_USE_LENSDIST_FX;
+				scene->hmd_settings.flag |= (HMDVIEW_USE_LENSDIST_FX | HMDVIEW_USE_DEVICE_IPD);
 			}
 		}
 	}
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 1ea9e1b..469df35 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -793,14 +793,30 @@ static void rna_Scene_hmd_view_lensdist_set(PointerRNA *ptr, int value)
 
 static int rna_Scene_use_hmd_device_ipd_editeable(PointerRNA *ptr, const char **r_info)
 {
+	Scene *scene = ptr->data;
+	bool editable = true;
 
-	if (U.hmd_device == -1 || WM_device_HMD_IPD_get() == -1) {
-		Scene *scene = ptr->data;
+	if (U.hmd_device == -1) {
+		*r_info = "No valid HMD device selected (see User Preferences)";
+		editable = false;
+	}
+	else {
+		const bool has_active_device = WM_device_HMD_current_get() >= 0;
 
-		*r_info = (U.hmd_device == -1) ?
-		              "No valid HMD device selected (see User Preferences)" :
-		              "Active HMD device doesn't return valid interocular distance";
+		if (!has_active_device) {
+			/* temporary activate device to see if it returns an IPD */
+			WM_device_HMD_state_set(U.hmd_device, true);
+		}
+		if (WM_device_HMD_IPD_get() == -1.0f) {
+			*r_info = "Active HMD device doesn't return valid interocular distance";
+			editable = false;
+		}
+		if (!has_active_device) {
+			WM_device_HMD_state_set(U.hmd_device, false);
+		}
+	}
 
+	if (!editable) {
 		scene->hmd_settings.flag |= HMDVIEW_USE_DEVICE_IPD;
 		return false;
 	}
@@ -7377,7 +7393,7 @@ void RNA_def_scene(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "HMD View Lens Distortion", "Draw the HMD viewport using a distorted lens");
 
 	prop = RNA_def_property(srna, "use_hmd_device_ipd", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_negative_sdna(prop, NULL, "hmd_settings.flag", HMDVIEW_USE_DEVICE_IPD);
+	RNA_def_property_boolean_sdna(prop, NULL, "hmd_settings.flag", HMDVIEW_USE_DEVICE_IPD);
 	RNA_def_property_ui_text(prop, "Interocular Distance from HMD",
 	                         "Request the interocular distance (distance between eyes) from the HMD driver");
 	RNA_def_property_editable_func(prop, "rna_Scene_use_hmd_device_ipd_editeable");




More information about the Bf-blender-cvs mailing list