]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_agl.c
implemented vid_refreshrate cvar to specify display refresh rate in windows
[xonotic/darkplaces.git] / vid_agl.c
index aa7e8b01f9c057f7f7711f106f84ad169ae7d8f4..83de5e8df36c0ee8ef0a1c5e59d4b484f84e822f 100644 (file)
--- a/vid_agl.c
+++ b/vid_agl.c
@@ -31,6 +31,8 @@
 // Tell startup code that we have a client
 int cl_available = true;
 
+qboolean vid_supportrefreshrate = false;
+
 // AGL prototypes
 AGLPixelFormat (*qaglChoosePixelFormat) (const AGLDevice *gdevs, GLint ndev, const GLint *attribList);
 AGLContext (*qaglCreateContext) (AGLPixelFormat pix, AGLContext share);
@@ -299,7 +301,7 @@ static void VID_BuildAGLAttrib(GLint *attrib, int stencil, qboolean fullscreen)
        *attrib++ = AGL_NONE;
 }
 
-int VID_InitMode(int fullscreen, int width, int height, int bpp)
+int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate)
 {
     const EventTypeSpec winEvents[] =
        {
@@ -319,14 +321,14 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp)
                return false;
        }
 
-       if ((qaglChoosePixelFormat = GL_GetProcAddress("aglChoosePixelFormat")) == NULL
-        || (qaglCreateContext = GL_GetProcAddress("aglCreateContext")) == NULL
-        || (qaglDestroyContext = GL_GetProcAddress("aglDestroyContext")) == NULL
-        || (qaglDestroyPixelFormat = GL_GetProcAddress("aglDestroyPixelFormat")) == NULL
-        || (qaglSetCurrentContext = GL_GetProcAddress("aglSetCurrentContext")) == NULL
-        || (qaglSetDrawable = GL_GetProcAddress("aglSetDrawable")) == NULL
-        || (qaglSetFullScreen = GL_GetProcAddress("aglSetFullScreen")) == NULL
-        || (qaglSwapBuffers = GL_GetProcAddress("aglSwapBuffers")) == NULL
+       if ((qaglChoosePixelFormat = (AGLPixelFormat (*) (const AGLDevice *gdevs, GLint ndev, const GLint *attribList))GL_GetProcAddress("aglChoosePixelFormat")) == NULL
+        || (qaglCreateContext = (AGLContext (*) (AGLPixelFormat pix, AGLContext share))GL_GetProcAddress("aglCreateContext")) == NULL
+        || (qaglDestroyContext = (GLboolean (*) (AGLContext ctx))GL_GetProcAddress("aglDestroyContext")) == NULL
+        || (qaglDestroyPixelFormat = (void (*) (AGLPixelFormat pix))GL_GetProcAddress("aglDestroyPixelFormat")) == NULL
+        || (qaglSetCurrentContext = (GLboolean (*) (AGLContext ctx))GL_GetProcAddress("aglSetCurrentContext")) == NULL
+        || (qaglSetDrawable = (GLboolean (*) (AGLContext ctx, AGLDrawable draw))GL_GetProcAddress("aglSetDrawable")) == NULL
+        || (qaglSetFullScreen = (GLboolean (*) (AGLContext ctx, GLsizei width, GLsizei height, GLsizei freq, GLint device))GL_GetProcAddress("aglSetFullScreen")) == NULL
+        || (qaglSwapBuffers = (void (*) (AGLContext ctx))GL_GetProcAddress("aglSwapBuffers")) == NULL
        )
        {
                Con_Printf("AGL functions not found\n");
@@ -378,13 +380,22 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp)
 
        // Set context and show the window
        context = qaglCreateContext(pixelFormat, NULL);
-       qaglDestroyPixelFormat(pixelFormat);
        if (context == NULL)
-               Sys_Error ("aglCreateContext failed\n");
-       if (!qaglSetDrawable(context, GetWindowPort(window)))
-               Sys_Error ("aglSetDrawable failed\n");
+               Sys_Error ("aglCreateContext failed");
+       if (fullscreen)
+       {
+               if (!qaglSetFullScreen (context, width, height, 0, 0))
+                       Sys_Error("aglSetFullScreen failed");
+               vid_isfullscreen = true;
+       }
+       else
+       {
+               if (!qaglSetDrawable(context, GetWindowPort(window)))
+                       Sys_Error ("aglSetDrawable failed");
+       }
        if (!qaglSetCurrentContext(context))
-               Sys_Error ("aglSetCurrentContext failed\n");
+               Sys_Error ("aglSetCurrentContext failed");
+       qaglDestroyPixelFormat(pixelFormat);
 
        scr_width = width;
        scr_height = height;
@@ -392,13 +403,6 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp)
        if ((qglGetString = (const GLubyte* (GLAPIENTRY *)(GLenum name))GL_GetProcAddress("glGetString")) == NULL)
                Sys_Error("glGetString not found in %s", gl_driver);
 
-       if (fullscreen)
-       {
-               if (!qaglSetFullScreen (context, width, height, 0, 0))
-                       Sys_Error("aglSetFullScreen failed\n");
-               vid_isfullscreen = true;
-       }
-
        gl_renderer = (const char *)qglGetString(GL_RENDERER);
        gl_vendor = (const char *)qglGetString(GL_VENDOR);
        gl_version = (const char *)qglGetString(GL_VERSION);
@@ -454,7 +458,7 @@ static void Handle_KeyMod(UInt32 keymod)
        prev_keymod = keymod;
 }
 
-static void Handle_Key(qbyte charcode, qboolean keypressed)
+static void Handle_Key(unsigned char charcode, qboolean keypressed)
 {
        unsigned int keycode = 0;
        char ascii = '\0';
@@ -512,7 +516,7 @@ static void Handle_Key(qbyte charcode, qboolean keypressed)
                                keycode = charcode + ('a' - 'A');  // lowercase it
                                ascii = charcode;
                        }
-                       else if (32 <= charcode && charcode <= 126)
+                       else if (32 <= charcode)
                        {
                                keycode = charcode;
                                ascii = charcode;