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;
 }
 
 /* ******************************************************* */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to