X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=cl_screen.c;h=fb52f0410a96270f34eaef99670e4e2fb4ecec31;hb=147be7801e60c4ad87d155925dd45f4ae5e81646;hp=d3794fb6dfe6f09fccddad52e14ba5d1cbb6f764;hpb=aae58de542b8a29f9eb2e9979b78109348dd655f;p=xonotic%2Fdarkplaces.git diff --git a/cl_screen.c b/cl_screen.c index d3794fb6..fb52f041 100644 --- a/cl_screen.c +++ b/cl_screen.c @@ -2037,6 +2037,9 @@ void SCR_UpdateLoadingScreen (qboolean clear) // don't do anything if not initialized yet if (vid_hidden || !scr_refresh.integer) return; + // release mouse grab while loading + if (!vid.fullscreen) + VID_GrabMouse(false); CHECKGLERROR qglViewport(0, 0, vid.width, vid.height);CHECKGLERROR //qglDisable(GL_SCISSOR_TEST);CHECKGLERROR @@ -2081,19 +2084,19 @@ void SCR_UpdateLoadingScreen (qboolean clear) if (vid.stereobuffer) { qglDrawBuffer(GL_FRONT_LEFT); - R_Mesh_Draw(0, 4, 2, polygonelements, 0, 0); + R_Mesh_Draw(0, 4, 0, 2, NULL, polygonelements, 0, 0); qglDrawBuffer(GL_FRONT_RIGHT); - R_Mesh_Draw(0, 4, 2, polygonelements, 0, 0); + R_Mesh_Draw(0, 4, 0, 2, NULL, polygonelements, 0, 0); } else { qglDrawBuffer(GL_FRONT); - R_Mesh_Draw(0, 4, 2, polygonelements, 0, 0); + R_Mesh_Draw(0, 4, 0, 2, NULL, polygonelements, 0, 0); } R_Mesh_Finish(); // refresh // not necessary when rendering to GL_FRONT buffers - //VID_Finish(false); + //VID_Finish(); // however this IS necessary on Windows Vista qglFinish(); } @@ -2110,6 +2113,10 @@ void CL_UpdateScreen(void) { double rendertime1; float conwidth, conheight; + qboolean grabmouse; + + if (!scr_initialized || !con_initialized) + return; // not initialized yet if(gamemode == GAME_NEXUIZ) { @@ -2127,9 +2134,6 @@ void CL_UpdateScreen(void) if (vid_hidden || !scr_refresh.integer) return; - if (!scr_initialized || !con_initialized) - return; // not initialized yet - rendertime1 = Sys_DoubleTime(); conwidth = bound(320, vid_conwidth.value, 2048); @@ -2269,7 +2273,25 @@ void CL_UpdateScreen(void) else cl_updatescreen_quality = 1; - VID_Finish(true); + if (key_consoleactive) + grabmouse = false; + else if (key_dest == key_menu_grabbed) + grabmouse = true; + else if (key_dest == key_menu) + grabmouse = !in_client_mouse; + else if (key_dest == key_game) + grabmouse = vid_mouse.integer && !cls.demoplayback && !cl.csqc_wantsmousemove; + else + grabmouse = false; + vid.mouseaim = grabmouse; + if (vid.fullscreen) + grabmouse = true; + if (!vid_activewindow) + grabmouse = false; + + VID_GrabMouse(grabmouse); + + VID_Finish(); } void CL_Screen_NewMap(void)