X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=vid_wgl.c;h=8cce143a75cf04f63b6b0f1f81ae8f2df3ceb8bf;hb=da0612b4ffbcdd7552c9b2cbb510f1ecd6da1e97;hp=e014659c7080e0a1f28a0a20b7cdba43f5358a9f;hpb=5deb3054efec963265e40b9155ac6af3149a763a;p=xonotic%2Fdarkplaces.git diff --git a/vid_wgl.c b/vid_wgl.c index e014659c..8cce143a 100644 --- a/vid_wgl.c +++ b/vid_wgl.c @@ -19,6 +19,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // gl_vidnt.c -- NT GL vid component +// we don't need a very new dinput +#define DIRECTINPUT_VERSION 0x0300 + #include "quakedef.h" #include #include @@ -37,6 +40,8 @@ extern HINSTANCE global_hInstance; // Tell startup code that we have a client int cl_available = true; +qboolean vid_supportrefreshrate = true; + static int (WINAPI *qwglChoosePixelFormat)(HDC, CONST PIXELFORMATDESCRIPTOR *); static int (WINAPI *qwglDescribePixelFormat)(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR); //static int (WINAPI *qwglGetPixelFormat)(HDC); @@ -291,7 +296,7 @@ void VID_Finish (void) -static qbyte scantokey[128] = +static unsigned char scantokey[128] = { // 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 ,27 ,'1' ,'2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9' ,'0' ,'-' ,'=' ,K_BACKSPACE,9 ,//0 @@ -466,6 +471,26 @@ void Sys_SendKeyEvents (void) LONG CDAudio_MessageHandler(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); +static keynum_t buttonremap[16] = +{ + K_MOUSE1, + K_MOUSE2, + K_MOUSE3, + K_MOUSE4, + K_MOUSE5, + K_MOUSE6, + K_MOUSE7, + K_MOUSE8, + K_MOUSE9, + K_MOUSE10, + K_MOUSE11, + K_MOUSE12, + K_MOUSE13, + K_MOUSE14, + K_MOUSE15, + K_MOUSE16, +}; + /* main window procedure */ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -564,9 +589,9 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { // perform button actions int i; - for (i=0 ; i= 32) @@ -764,10 +789,11 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) vid_isfullscreen = false; if (fullscreen) { - gdevmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; + gdevmode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY; gdevmode.dmBitsPerPel = bpp; gdevmode.dmPelsWidth = width; gdevmode.dmPelsHeight = height; + gdevmode.dmDisplayFrequency = refreshrate; gdevmode.dmSize = sizeof (gdevmode); if (ChangeDisplaySettings (&gdevmode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) { @@ -906,14 +932,14 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) return false; } - qglGetString = GL_GetProcAddress("glGetString"); - qwglGetExtensionsStringARB = GL_GetProcAddress("wglGetExtensionsStringARB"); - if (qglGetString == NULL) + if ((qglGetString = (const GLubyte* (GLAPIENTRY *)(GLenum name))GL_GetProcAddress("glGetString")) == NULL) { VID_Shutdown(); Con_Print("glGetString not found\n"); return false; } + if ((qwglGetExtensionsStringARB = (const char *(WINAPI *)(HDC hdc))GL_GetProcAddress("wglGetExtensionsStringARB")) == NULL) + Con_Print("wglGetExtensionsStringARB not found\n"); gl_renderer = qglGetString(GL_RENDERER); gl_vendor = qglGetString(GL_VENDOR); gl_version = qglGetString(GL_VERSION); @@ -951,6 +977,13 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp) IN_StartupMouse (); IN_StartupJoystick (); + if (gl_videosyncavailable) + { + vid_usevsync = vid_vsync.integer; + vid_usingvsync = vid_vsync.integer; + qwglSwapIntervalEXT (vid_usevsync); + } + return true; } @@ -1255,9 +1288,9 @@ static void IN_MouseMove (void) } // perform button actions - for (i=0 ; i