[Bf-blender-cvs] [5993553] HMD_viewport: Fix camera not being reset when stopping session by closing HMD window

Julian Eisel noreply at git.blender.org
Thu Mar 17 22:54:43 CET 2016


Commit: 599355304d4a027b73379f6fe16535b7eebc51e6
Author: Julian Eisel
Date:   Thu Mar 17 22:53:57 2016 +0100
Branches: HMD_viewport
https://developer.blender.org/rB599355304d4a027b73379f6fe16535b7eebc51e6

Fix camera not being reset when stopping session by closing HMD window

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

M	source/blender/windowmanager/intern/wm_operators.c

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

diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 212425a..ebd1396 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -5116,6 +5116,17 @@ typedef struct HMDData {
  */
 static float init_rot[4];
 
+static void hmd_view_exit(const bContext *C, wmWindow *hmd_win, Scene *scene)
+{
+	View3D *v3d = CTX_wm_view3d(C);
+	Object *ob = v3d ? v3d->camera : scene->camera;
+
+	WM_window_fullscreen_toggle(hmd_win, false, true);
+	/* reset initial camera rotation */
+	BKE_object_quat_to_rot(ob, init_rot);
+	DAG_id_tag_update(&ob->id, OB_RECALC_OB);  /* sets recalc flags */
+}
+
 static int wm_hmd_view_open_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *UNUSED(event))
 {
 	wmWindow *prevwin = CTX_wm_window(C);
@@ -5124,6 +5135,7 @@ static int wm_hmd_view_open_invoke(bContext *C, wmOperator *UNUSED(op), const wm
 
 	/* close */
 	if ((win = wm->win_hmd)) {
+		hmd_view_exit(C, win, CTX_data_scene(C));
 		wm_window_close(C, wm, win);
 		wm->win_hmd = NULL;
 	}
@@ -5160,17 +5172,12 @@ static int hmd_session_run_invoke(bContext *C, wmOperator *UNUSED(op), const wmE
 	const bool was_hmd_running = (scene->flag & SCE_HMD_RUNNING);
 
 	if (!hmd_win) {
+		hmd_view_exit(C, hmd_win, scene);
 		return (OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH);
 	}
 
 	scene->flag ^= SCE_HMD_RUNNING;
 	if (was_hmd_running) {
-		View3D *v3d = CTX_wm_view3d(C);
-		Object *ob = v3d ? v3d->camera : scene->camera;
-		WM_window_fullscreen_toggle(hmd_win, false, true);
-		/* reset initial camera rotation */
-		BKE_object_quat_to_rot(ob, init_rot);
-		DAG_id_tag_update(&ob->id, OB_RECALC_OB);  /* sets recalc flags */
 		return (OPERATOR_CANCELLED | OPERATOR_PASS_THROUGH);
 	}
 	else {




More information about the Bf-blender-cvs mailing list