]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_wgl.c
added DP_ASINACOSATANATAN2TAN extension which adds common trig functions missing...
[xonotic/darkplaces.git] / vid_wgl.c
index a06465d1f32eda83d1de0293e52875b9450577d4..6c58989553ea21bb69c1709b48b24612e9ae5cfc 100644 (file)
--- a/vid_wgl.c
+++ b/vid_wgl.c
@@ -24,12 +24,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 #include "quakedef.h"
 #include <windows.h>
+#include <mmsystem.h>
 #include <dsound.h>
 #include "resource.h"
 #include <commctrl.h>
+#include <dinput.h>
 
-extern void S_BlockSound (void);
-extern void S_UnblockSound (void);
 extern HINSTANCE global_hInstance;
 
 
@@ -115,8 +115,6 @@ static qboolean dinput;
 
 // input code
 
-#include <dinput.h>
-
 #define DINPUT_BUFFERSIZE           16
 #define iDirectInputCreate(a,b,c,d)    pDirectInputCreate(a,b,c,d)
 
@@ -275,7 +273,7 @@ void VID_Finish (qboolean allowmousegrab)
 
 // handle the mouse state when windowed if that's changed
        vid_usemouse = false;
-       if (allowmousegrab && vid_mouse.integer && !key_consoleactive && !cls.demoplayback)
+       if (allowmousegrab && vid_mouse.integer && !key_consoleactive && (key_dest != key_game || !cls.demoplayback))
                vid_usemouse = true;
        if (vid_isfullscreen)
                vid_usemouse = true;
@@ -285,10 +283,15 @@ void VID_Finish (qboolean allowmousegrab)
 
        if (r_render.integer && !vid_hidden)
        {
+               CHECKGLERROR
                if (r_speeds.integer || gl_finish.integer)
-                       qglFinish();
+               {
+                       qglFinish();CHECKGLERROR
+               }
                SwapBuffers(baseDC);
        }
+
+       VID_UpdateGamma(false, 256);
 }
 
 //==========================================================================
@@ -409,7 +412,7 @@ void AppActivate(BOOL fActive, BOOL minimize)
 *
 ****************************************************************************/
 {
-       static BOOL     sound_active;
+       static qboolean sound_active = false;  // initially blocked by Sys_InitConsole()
 
        vid_activewindow = fActive;
        vid_hidden = minimize;
@@ -647,7 +650,7 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM  wParam, LPARAM lParam)
        return lRet;
 }
 
-int VID_SetGamma(unsigned short *ramps)
+int VID_SetGamma(unsigned short *ramps, int rampsize)
 {
        HDC hdc = GetDC (NULL);
        int i = SetDeviceGammaRamp(hdc, ramps);
@@ -655,7 +658,7 @@ int VID_SetGamma(unsigned short *ramps)
        return i; // return success or failure
 }
 
-int VID_GetGamma(unsigned short *ramps)
+int VID_GetGamma(unsigned short *ramps, int rampsize)
 {
        HDC hdc = GetDC (NULL);
        int i = GetDeviceGammaRamp(hdc, ramps);
@@ -685,7 +688,7 @@ static int GL_OpenLibrary(const char *name)
                Con_Printf("Unable to LoadLibrary %s\n", name);
                return false;
        }
-       strcpy(gl_driver, name);
+       strlcpy(gl_driver, name, sizeof(gl_driver));
        return true;
 }
 
@@ -725,7 +728,7 @@ void VID_Init(void)
        IN_Init();
 }
 
-int VID_InitMode (int fullscreen, int width, int height, int bpp, int refreshrate)
+int VID_InitMode (int fullscreen, int width, int height, int bpp, int refreshrate, int stereobuffer)
 {
        int i;
        HDC hdc;
@@ -773,6 +776,9 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp, int refreshrat
                pfd.cAlphaBits = 0;
        }
 
+       if (stereobuffer)
+               pfd.dwFlags |= PFD_STEREO;
+
        gldrivername = "opengl32.dll";
 // COMMANDLINEOPTION: Windows WGL: -gl_driver <drivername> selects a GL driver library, default is opengl32.dll, useful only for 3dfxogl.dll or 3dfxvgl.dll, if you don't know what this is for, you don't need it
        i = COM_CheckParm("-gl_driver");
@@ -1623,7 +1629,7 @@ static void IN_JoyMove (void)
        else
                speed = 1;
        // LordHavoc: viewzoom affects sensitivity for sniping
-       aspeed = speed * host_realframetime * cl.viewzoom;
+       aspeed = speed * cl.realframetime * cl.viewzoom;
 
        // loop through the axes
        for (i = 0; i < JOY_MAX_AXES; i++)