[Bf-blender-cvs] [d81b230] HMD_viewport: Automate selecting HMD device

Julian Eisel noreply at git.blender.org
Sun Apr 10 19:59:16 CEST 2016


Commit: d81b2309bc2af81bbc444dfa7e577555570ee9f7
Author: Julian Eisel
Date:   Sun Apr 10 19:40:21 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rBd81b2309bc2af81bbc444dfa7e577555570ee9f7

Automate selecting HMD device

This automates setting of HMD device UserPref option a bit, so that it's ready to go without manual adjustments.
We use the last device plugged in on startup (if one is available). On runtime, plugging in a device makes it active if 'None' was previously selected in the UserPref option.
Saving HMD in UserPrefs should also be supported, but can't test.
Also removes EVT_HMD_DEVICENUM_CHANGE and version patch, they're not needed anymore.

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

M	source/blender/blenkernel/BKE_blender.h
M	source/blender/editors/interface/resources.c
M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/intern/wm_window.c
M	source/blender/windowmanager/wm_event_types.h

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

diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 3eb1c30..fdb3474 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -42,7 +42,7 @@ extern "C" {
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         277
-#define BLENDER_SUBVERSION      1
+#define BLENDER_SUBVERSION      0
 /* Several breakages with 270, e.g. constraint deg vs rad */
 #define BLENDER_MINVERSION      270
 #define BLENDER_MINSUBVERSION   6
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index b6861e1..b1d2e32 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -2704,10 +2704,6 @@ void init_userdef_do_versions(void)
 		}
 	}
 
-	if (!USER_VERSION_ATLEAST(277, 1)) {
-		U.hmd_device = 0;
-	}
-
 	/**
 	 * Include next version bump.
 	 *
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 4436889..cc1a103 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -3505,23 +3505,13 @@ void wm_event_add_ghostevent(wmWindowManager *wm, wmWindow *win, int type, int U
 		{
 			GHOST_TEventOpenHMDData *e = customdata;
 
-			switch (e->subtype) {
-				case GHOST_kOrientationUpdate:
-					event.type = EVT_HMD_TRANSFORM;
-					event.customdata = MEM_mallocN(sizeof(e->orientation), "HMD orientation event data");
-					event.customdatafree = true;
-					memcpy(event.customdata, e->orientation, sizeof(e->orientation));
-					break;
-				case GHOST_kDeviceNumChanged:
-					event.type = EVT_HMD_DEVICENUM_CHANGE;
-					break;
-				default:
-					BLI_assert(0);
-					break;
+			if (e->subtype == GHOST_kOrientationUpdate) {
+				event.type = EVT_HMD_TRANSFORM;
+				event.customdata = MEM_mallocN(sizeof(e->orientation), "HMD orientation event data");
+				event.customdatafree = true;
+				memcpy(event.customdata, e->orientation, sizeof(e->orientation));
+				wm_event_add(win, &event);
 			}
-
-			wm_event_add(win, &event);
-
 			break;
 		}
 #endif /* WITH_INPUT_HMD */
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index c020131..4ff6cf7 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -1237,6 +1237,25 @@ static int ghost_event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr C_void_ptr
 				WM_event_add_notifier(C, NC_WINDOW | NA_EDITED, NULL);
 
 				break;
+			case GHOST_kEventHMD:
+			{
+				GHOST_TEventOpenHMDData *hmdd = data;
+
+				if (hmdd->subtype == GHOST_kDeviceNumChanged) {
+					if (WM_device_HMD_num_devices_get() > 0) {
+						if (U.hmd_device == -1) { /* Only if 'None' item is selected */
+							U.hmd_device = 0; /* last device plugged in */
+						}
+					}
+					else {
+						U.hmd_device = -1;
+					}
+				}
+				else {
+					wm_event_add_ghostevent(wm, win, type, time, data);
+				}
+				break;
+			}
 			case GHOST_kEventTrackpad:
 			{
 				GHOST_TEventTrackpadData *pd = data;
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index 44c7f92..7e7ae7e 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -292,7 +292,6 @@ enum {
 
 	/* VR Viewport transform event */
 	EVT_HMD_TRANSFORM,
-	EVT_HMD_DEVICENUM_CHANGE,
 
 	/* ********** End of Input devices. ********** */




More information about the Bf-blender-cvs mailing list