[Bf-blender-cvs] [409154f] HMD_viewport: Don't allow to open multiple HMD views

Julian Eisel noreply at git.blender.org
Wed Mar 16 16:11:01 CET 2016


Commit: 409154f1f8f6fc5c98998de80c0013eaa0247d60
Author: Julian Eisel
Date:   Fri Mar 11 03:24:23 2016 +0100
Branches: HMD_viewport
https://developer.blender.org/rB409154f1f8f6fc5c98998de80c0013eaa0247d60

Don't allow to open multiple HMD views

And cleanup.

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

M	source/blender/editors/space_view3d/view3d_edit.c
M	source/blender/windowmanager/intern/wm_operators.c

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

diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index a7cd860..8c36e24 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -4800,50 +4800,12 @@ void VIEW3D_OT_enable_manipulator(wmOperatorType *ot)
 	RNA_def_property_flag(prop, PROP_SKIP_SAVE);
 }
 
-/* ***************** TODO ******************* */
+/* ***************** HMD Session ******************* */
 
 typedef struct HMDData {
 	float orientation[4];
 } HMDData;
 
-static int hmd_refresh_poll(bContext *C)
-{
-	Scene *scene = CTX_data_scene(C);
-	return ((scene->r.scemode & R_HMD_IGNORE_ROT) == 0 && (scene->flag & SCE_HMD_RUNNING));
-}
-
-static int hmd_refresh_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
-{
-	Scene *scene = CTX_data_scene(C);
-	View3D *v3d = CTX_wm_view3d(C);
-	Object *camera_ob = v3d ? v3d->camera : scene->camera;
-	HMDData *data = event->customdata;
-	float quad[4] = {M_SQRT1_2, M_SQRT1_2, 0.0f, 0.0f};
-
-	mul_qt_qtqt(camera_ob->quat, quad, data->orientation);
-	normalize_qt(camera_ob->quat);
-	loc_quat_size_to_mat4(camera_ob->obmat, camera_ob->loc, camera_ob->quat, camera_ob->size);
-
-	DAG_id_tag_update(&camera_ob->id, 0);  /* sets recalc flags */
-	ED_region_tag_redraw(CTX_wm_region(C));
-
-	return OPERATOR_FINISHED;
-}
-
-void VIEW3D_OT_hmd_refresh(wmOperatorType *ot)
-{
-	/* identifiers */
-	ot->name = "Refresh HMD Data";
-	ot->description = "Updates the orientation of the head mounted display";
-	ot->idname = "VIEW3D_OT_hmd_refresh";
-
-	/* api callbacks */
-	ot->invoke = hmd_refresh_invoke;
-	ot->poll = hmd_refresh_poll;
-
-	/* flags */
-	ot->flag = OPTYPE_INTERNAL;
-}
 static void hmd_run_exit(wmWindow *win, Scene *scene)
 {
 	scene->flag &= ~SCE_HMD_RUNNING;
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index b96dfc3..45d51e3 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -5097,6 +5097,17 @@ static void WM_OT_stereo3d_set(wmOperatorType *ot)
 	RNA_def_property_flag(prop, PROP_SKIP_SAVE);
 }
 
+static int wm_hmd_view_open_poll(bContext *C)
+{
+	wmWindowManager *wm = CTX_wm_manager(C);
+	for (wmWindow *win = wm->windows.first; win; win = win->next) {
+		if (UNLIKELY(win->screen->flag & SCREEN_FLAG_HMD_SCREEN)) {
+			return false;
+		}
+	}
+	return true;
+}
+
 static int wm_hmd_view_open_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *UNUSED(event))
 {
 	wmWindow *win = wm_window_copy_test(C, CTX_wm_window(C));
@@ -5144,7 +5155,7 @@ static void WM_OT_hmd_view_open(wmOperatorType *ot)
 	ot->description = "Open a separate window for display on a head mounted display";
 
 	ot->invoke = wm_hmd_view_open_invoke;
-	ot->poll = WM_operator_winactive;
+	ot->poll = wm_hmd_view_open_poll;
 }
 
 /* ******************************************************* */




More information about the Bf-blender-cvs mailing list