X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=vid_wgl.c;h=0448ba64a4c32e16a9a4546deb98ef7142a0e439;hb=c218cedd2533732ee59de007261f2be25e605897;hp=29091695f6fac388667645c0eac4880b8842e2b6;hpb=c8b10ff42dfa1208346879250f655c3fd2909704;p=xonotic%2Fdarkplaces.git diff --git a/vid_wgl.c b/vid_wgl.c index 29091695..0448ba64 100644 --- a/vid_wgl.c +++ b/vid_wgl.c @@ -24,6 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "resource.h" #include +// Tell startup code that we have a client int cl_available = true; int (WINAPI *qwglChoosePixelFormat)(HDC, CONST PIXELFORMATDESCRIPTOR *); @@ -431,14 +432,6 @@ ClearAllStates */ void ClearAllStates (void) { - int i; - -// send an up event for each key, to make sure the server clears them all - for (i=0 ; i<256 ; i++) - { - Key_Event (i, false); - } - Key_ClearStates (); IN_ClearStates (); } @@ -476,7 +469,6 @@ void AppActivate(BOOL fActive, BOOL minimize) if (fActive) { - vid_allowhwgamma = true; if (vid_isfullscreen) { if (vid_wassuspended) @@ -493,7 +485,6 @@ void AppActivate(BOOL fActive, BOOL minimize) if (!fActive) { - vid_allowhwgamma = false; vid_usingmouse = false; IN_DeactivateMouse (); IN_ShowMouse (); @@ -513,6 +504,11 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { LONG lRet = 1; int fActive, fMinimized, temp; + char state[256]; + short ascchar; + int vkey; + qboolean down = false; + extern unsigned int uiWheelMessage; if ( uMsg == uiWheelMessage ) @@ -533,15 +529,16 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) window_y = (int) HIWORD(lParam); VID_UpdateWindowStatus (); break; - + case WM_KEYDOWN: case WM_SYSKEYDOWN: - Key_Event (MapKey(lParam, wParam), true); - break; - + down = true; case WM_KEYUP: case WM_SYSKEYUP: - Key_Event (MapKey(lParam, wParam), false); + vkey = MapKey(lParam, wParam); + GetKeyboardState (state); + ToAscii (wParam, vkey, state, &ascchar, 0); + Key_Event (vkey, (char)(ascchar & 0xFF), down); break; case WM_SYSCHAR: @@ -599,11 +596,11 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) // Event. case WM_MOUSEWHEEL: if ((short) HIWORD(wParam) > 0) { - Key_Event(K_MWHEELUP, true); - Key_Event(K_MWHEELUP, false); + Key_Event(K_MWHEELUP, 0, true); + Key_Event(K_MWHEELUP, 0, false); } else { - Key_Event(K_MWHEELDOWN, true); - Key_Event(K_MWHEELDOWN, false); + Key_Event(K_MWHEELDOWN, 0, true); + Key_Event(K_MWHEELDOWN, 0, false); } break; @@ -664,7 +661,7 @@ static HINSTANCE gldll; int GL_OpenLibrary(const char *name) { - Con_Printf("Loading GL driver %s\n", name); + Con_Printf("Loading OpenGL driver %s\n", name); GL_CloseLibrary(); if (!(gldll = LoadLibrary(name))) { @@ -722,7 +719,7 @@ void VID_Init(void) IN_Init(); } -int VID_InitMode (int fullscreen, int width, int height, int bpp, int stencil) +int VID_InitMode (int fullscreen, int width, int height, int bpp) { int i; HDC hdc; @@ -759,7 +756,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp, int stencil) Sys_Error("VID_InitMode called when video is already initialised\n"); // if stencil is enabled, ask for alpha too - if (stencil) + if (bpp >= 32) { pfd.cStencilBits = 8; pfd.cAlphaBits = 8; @@ -799,7 +796,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp, int stencil) vid_isfullscreen = true; WindowStyle = WS_POPUP; - ExWindowStyle = 0; + ExWindowStyle = WS_EX_TOPMOST; } else { @@ -976,6 +973,9 @@ void VID_Shutdown (void) HGLRC hRC = 0; HDC hDC = 0; + if(vid_initialized == false) + return; + VID_RestoreSystemGamma(); vid_initialized = false; @@ -992,13 +992,13 @@ void VID_Shutdown (void) GL_CloseLibrary(); if (hDC && mainwindow) ReleaseDC(mainwindow, hDC); - if (vid_isfullscreen) - ChangeDisplaySettings (NULL, 0); - vid_isfullscreen = false; AppActivate(false, false); if (mainwindow) DestroyWindow(mainwindow); mainwindow = 0; + if (vid_isfullscreen) + ChangeDisplaySettings (NULL, 0); + vid_isfullscreen = false; } @@ -1284,13 +1284,13 @@ void IN_MouseEvent (int mstate) if ( (mstate & (1<