Fix #20323: closing other window while BGE is running crashes.

This commit is contained in:
Brecht Van Lommel 2009-12-14 14:16:39 +00:00
parent 7b70ec6b9d
commit 32d5429e35

@ -1709,6 +1709,7 @@ static int game_engine_exec(bContext *C, wmOperator *unused)
Scene *startscene = CTX_data_scene(C); Scene *startscene = CTX_data_scene(C);
ScrArea *sa, *prevsa= CTX_wm_area(C); ScrArea *sa, *prevsa= CTX_wm_area(C);
ARegion *ar, *prevar= CTX_wm_region(C); ARegion *ar, *prevar= CTX_wm_region(C);
wmWindow *prevwin= CTX_wm_window(C);
RegionView3D *rv3d; RegionView3D *rv3d;
rcti cam_frame; rcti cam_frame;
@ -1742,11 +1743,15 @@ static int game_engine_exec(bContext *C, wmOperator *unused)
SaveState(C); SaveState(C);
StartKetsjiShell(C, ar, &cam_frame, 1);
RestoreState(C);
StartKetsjiShell(C, ar, &cam_frame, 1);
/* restore context, in case it changed in the meantime, for
example by working in another window or closing it */
CTX_wm_region_set(C, prevar); CTX_wm_region_set(C, prevar);
CTX_wm_area_set(C, prevsa); CTX_wm_area_set(C, prevsa);
CTX_wm_window_set(C, prevwin);
RestoreState(C);
//XXX restore_all_scene_cfra(scene_cfra_store); //XXX restore_all_scene_cfra(scene_cfra_store);
set_scene_bg(startscene); set_scene_bg(startscene);