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 {

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

Reply via email to