X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=vid_wgl.c;h=7b64cd0e325fc6489288b9539fcc315c6e334bd9;hp=194c0da8f5daeeead4e864c69c61bca1c97511cb;hb=426d3967446d906a9612ae09e6748d3dad26c60f;hpb=8f3ddd0d13646f4563ed587c21e4282b1281f84f diff --git a/vid_wgl.c b/vid_wgl.c index 194c0da8..7b64cd0e 100644 --- a/vid_wgl.c +++ b/vid_wgl.c @@ -26,6 +26,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include extern void S_BlockSound (void); +extern void S_UnblockSound (void); extern HINSTANCE global_hInstance; @@ -304,9 +305,20 @@ void VID_Finish (void) { HDC hdc; int vid_usemouse; + static int old_vsync = -1; + + if (old_vsync != vid_vsync.integer) + { + old_vsync = bound(0, vid_vsync.integer, 1); + Cvar_SetValueQuick(&vid_vsync, old_vsync); + if (gl_videosyncavailable) + qwglSwapIntervalEXT (old_vsync); + } + if (r_render.integer && !scr_skipupdate) { - qglFinish(); + if (r_speeds.integer || gl_finish.integer) + qglFinish(); hdc = GetDC(mainwindow); SwapBuffers(hdc); ReleaseDC(mainwindow, hdc); @@ -506,6 +518,24 @@ void AppActivate(BOOL fActive, BOOL minimize) } } +//TODO: move it around in vid_wgl.c since I dont think this is the right position +void Sys_SendKeyEvents (void) +{ + MSG msg; + + while (PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE)) + { + // we always update if there are any event, even if we're paused + scr_skipupdate = 0; + + if (!GetMessage (&msg, NULL, 0, 0)) + Sys_Quit (); + + TranslateMessage (&msg); + DispatchMessage (&msg); + } +} + LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); /* main window procedure */ @@ -711,7 +741,7 @@ void VID_Init(void) WNDCLASS wc; InitCommonControls(); - hIcon = LoadIcon (global_hInstance, MAKEINTRESOURCE (IDI_ICON2)); + hIcon = LoadIcon (global_hInstance, MAKEINTRESOURCE (IDI_ICON1)); // Register the frame class wc.style = 0; @@ -719,7 +749,7 @@ void VID_Init(void) wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = global_hInstance; - wc.hIcon = 0; + wc.hIcon = hIcon; wc.hCursor = LoadCursor (NULL,IDC_ARROW); wc.hbrBackground = NULL; wc.lpszMenuName = 0; @@ -781,6 +811,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) } gldrivername = "opengl32.dll"; +// COMMANDLINEOPTION: -gl_driver selects a GL driver library, default is libGL.so.1 (Linux/BSD) or opengl32.dll (windows) or /usr/X11R6/lib/libGL.1.dylib (MacOSX), if you don't know what this is for, you don't need it i = COM_CheckParm("-gl_driver"); if (i && i < com_argc - 1) gldrivername = com_argv[i + 1]; @@ -820,13 +851,13 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) if (i & RC_PALETTE) { VID_Shutdown(); - Con_Printf ("Can't run in non-RGB mode\n"); + Con_Print("Can't run in non-RGB mode\n"); return false; } if (bpp > depth) { VID_Shutdown(); - Con_Printf ("A higher desktop depth is required to run this video mode\n"); + Con_Print("A higher desktop depth is required to run this video mode\n"); return false; } @@ -879,10 +910,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) ShowWindow (mainwindow, SW_SHOWDEFAULT); UpdateWindow (mainwindow); - SendMessage (mainwindow, WM_SETICON, (WPARAM)true, (LPARAM)hIcon); - SendMessage (mainwindow, WM_SETICON, (WPARAM)false, (LPARAM)hIcon); - - VID_UpdateWindowStatus (); + VID_UpdateWindowStatus (); // now we try to make sure we get the focus on the mode switch, because // sometimes in some systems we don't. We grab the foreground, then @@ -926,7 +954,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) if (!GL_CheckExtension("wgl", wglfuncs, NULL, false)) { VID_Shutdown(); - Con_Printf("wgl functions not found\n"); + Con_Print("wgl functions not found\n"); return false; } @@ -934,7 +962,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) if (!baseRC) { VID_Shutdown(); - Con_Printf("Could not initialize GL (wglCreateContext failed).\n\nMake sure you are in 65536 color mode, and try running -window.\n"); + Con_Print("Could not initialize GL (wglCreateContext failed).\n\nMake sure you are in 65536 color mode, and try running -window.\n"); return false; } if (!qwglMakeCurrent(hdc, baseRC)) @@ -949,7 +977,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) if (qglGetString == NULL) { VID_Shutdown(); - Con_Printf("glGetString not found\n"); + Con_Print("glGetString not found\n"); return false; } gl_renderer = qglGetString(GL_RENDERER); @@ -959,10 +987,13 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) gl_platform = "WGL"; gl_platformextensions = ""; + gl_videosyncavailable = false; + if (qwglGetExtensionsStringARB) gl_platformextensions = qwglGetExtensionsStringARB(hdc); - gl_videosyncavailable = GL_CheckExtension("WGL_EXT_swap_control", wglswapintervalfuncs, NULL, false); +// COMMANDLINEOPTION: -novideosync disables WGL_EXT_swap_control (required for video sync control on WGL) + gl_videosyncavailable = GL_CheckExtension("WGL_EXT_swap_control", wglswapintervalfuncs, "-novideosync", false); ReleaseDC(mainwindow, hdc); GL_Init (); @@ -1161,7 +1192,7 @@ qboolean IN_InitDInput (void) if (hInstDI == NULL) { - Con_SafePrintf ("Couldn't load dinput.dll\n"); + Con_SafePrint("Couldn't load dinput.dll\n"); return false; } } @@ -1172,7 +1203,7 @@ qboolean IN_InitDInput (void) if (!pDirectInputCreate) { - Con_SafePrintf ("Couldn't get DI proc addr\n"); + Con_SafePrint("Couldn't get DI proc addr\n"); return false; } } @@ -1190,7 +1221,7 @@ qboolean IN_InitDInput (void) if (FAILED(hr)) { - Con_SafePrintf ("Couldn't open DI mouse device\n"); + Con_SafePrint("Couldn't open DI mouse device\n"); return false; } @@ -1199,7 +1230,7 @@ qboolean IN_InitDInput (void) if (FAILED(hr)) { - Con_SafePrintf ("Couldn't set DI mouse format\n"); + Con_SafePrint("Couldn't set DI mouse format\n"); return false; } @@ -1209,7 +1240,7 @@ qboolean IN_InitDInput (void) if (FAILED(hr)) { - Con_SafePrintf ("Couldn't set DI coop level\n"); + Con_SafePrint("Couldn't set DI coop level\n"); return false; } @@ -1220,7 +1251,7 @@ qboolean IN_InitDInput (void) if (FAILED(hr)) { - Con_SafePrintf ("Couldn't set DI buffersize\n"); + Con_SafePrint("Couldn't set DI buffersize\n"); return false; } @@ -1235,22 +1266,24 @@ IN_StartupMouse */ void IN_StartupMouse (void) { +// COMMANDLINEOPTION: -nomouse disables mouse support (see also vid_mouse cvar) if (COM_CheckParm ("-nomouse") || COM_CheckParm("-safe")) return; mouseinitialized = true; +// COMMANDLINEOPTION: -dinput uses DirectInput for mouse/joystick input, may be more precise or responsive, but probably not (windows only) if (COM_CheckParm ("-dinput")) { dinput = IN_InitDInput (); if (dinput) { - Con_SafePrintf ("DirectInput initialized\n"); + Con_SafePrint("DirectInput initialized\n"); } else { - Con_SafePrintf ("DirectInput not initialized\n"); + Con_SafePrint("DirectInput not initialized\n"); } } @@ -1260,15 +1293,18 @@ void IN_StartupMouse (void) if (mouseparmsvalid) { +// COMMANDLINEOPTION: -noforcemspd disables setting of mouse speed (ignored with -dinput, windows only) if ( COM_CheckParm ("-noforcemspd") ) newmouseparms[2] = originalmouseparms[2]; +// COMMANDLINEOPTION: -noforcemaccel disables setting of mouse acceleration (ignored with -dinput, windows only) if ( COM_CheckParm ("-noforcemaccel") ) { newmouseparms[0] = originalmouseparms[0]; newmouseparms[1] = originalmouseparms[1]; } +// COMMANDLINEOPTION: -noforcemparms disables setting of mouse parameters (ignored with -dinput, windows only) if ( COM_CheckParm ("-noforcemparms") ) { newmouseparms[0] = originalmouseparms[0]; @@ -1335,7 +1371,7 @@ void IN_MouseMove (usercmd_t *cmd) { GetCursorPos (¤t_pos); //ui_mouseupdate(current_pos.x - window_x, current_pos.y - window_y); - in_mouse_x = in_mouse_y = 0; + IN_Mouse( cmd, 0, 0 ); return; } @@ -1502,13 +1538,14 @@ void IN_StartupJoystick (void) joy_avail = false; // abort startup if user requests no joystick +// COMMANDLINEOPTION: -nojoy disables joystick support, may be a small speed increase if (COM_CheckParm ("-nojoy") || COM_CheckParm("-safe")) return; // verify joystick driver is present if ((numdevs = joyGetNumDevs ()) == 0) { - Con_Printf ("\njoystick not found -- driver not present\n\n"); + Con_Print("\njoystick not found -- driver not present\n\n"); return; } @@ -1526,7 +1563,7 @@ void IN_StartupJoystick (void) // abort startup if we didn't find a valid joystick if (mmr != JOYERR_NOERROR) { - Con_Printf ("\njoystick not found -- no valid joysticks (%x)\n\n", mmr); + Con_Printf("\njoystick not found -- no valid joysticks (%x)\n\n", mmr); return; } @@ -1535,7 +1572,7 @@ void IN_StartupJoystick (void) memset (&jc, 0, sizeof(jc)); if ((mmr = joyGetDevCaps (joy_id, &jc, sizeof(jc))) != JOYERR_NOERROR) { - Con_Printf ("\njoystick not found -- invalid joystick capabilities (%x)\n\n", mmr); + Con_Printf("\njoystick not found -- invalid joystick capabilities (%x)\n\n", mmr); return; } @@ -1552,7 +1589,7 @@ void IN_StartupJoystick (void) joy_avail = true; joy_advancedinit = false; - Con_Printf ("\njoystick detected\n\n"); + Con_Print("\njoystick detected\n\n"); } @@ -1617,7 +1654,7 @@ void Joy_AdvancedUpdate_f (void) if (strcmp (joy_name.string, "joystick") != 0) { // notify user of advanced controller - Con_Printf ("\n%s configured\n\n", joy_name.string); + Con_Printf("\n%s configured\n\n", joy_name.string); } // advanced initialization here @@ -1676,13 +1713,13 @@ void IN_Commands (void) { if ( (buttonstate & (1<