]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_glx.c
make COM_StringLengthNoColors and COM_StringDecolorize get an additional length param...
[xonotic/darkplaces.git] / vid_glx.c
index 04d6516ac50c4294fff924d9877747a822c4393f..291f5d5a10cdddeb5a4b414f3b9d936b56b5a850 100644 (file)
--- a/vid_glx.c
+++ b/vid_glx.c
@@ -202,7 +202,7 @@ static int XLateKey(XKeyEvent *ev, char *ascii)
                case XK_Insert:key = K_INS; break;
                case XK_KP_Insert: key = K_KP_INS; break;
 
-               case XK_KP_Multiply: key = '*'; break;
+               case XK_KP_Multiply: key = K_KP_MULTIPLY; break;
                case XK_KP_Add:  key = K_KP_PLUS; break;
                case XK_KP_Subtract: key = K_KP_MINUS; break;
                case XK_KP_Divide: key = K_KP_SLASH; break;
@@ -287,7 +287,8 @@ static void IN_Activate (qboolean grab)
 #endif
                                XWarpPointer(vidx11_display, None, win, 0, 0, 0, 0, vid.width / 2, vid.height / 2);
 
-                       XGrabKeyboard(vidx11_display, win, False, GrabModeAsync, GrabModeAsync, CurrentTime);
+                       if (vid_grabkeyboard.integer || vid_isfullscreen)
+                               XGrabKeyboard(vidx11_display, win, False, GrabModeAsync, GrabModeAsync, CurrentTime);
 
                        mouse_x = mouse_y = 0;
                        cl_ignoremousemove = true;
@@ -424,23 +425,21 @@ static void HandleEvents(void)
                        break;
                case DestroyNotify:
                        // window has been destroyed
-                       Sys_Quit();
+                       Sys_Quit(0);
                        break;
                case ClientMessage:
                        // window manager messages
                        if ((event.xclient.format == 32) && ((unsigned int)event.xclient.data.l[0] == wm_delete_window_atom))
-                               Sys_Quit();
+                               Sys_Quit(0);
                        break;
                case MapNotify:
                        // window restored
                        vid_hidden = false;
-                       vid_activewindow = false;
                        VID_RestoreSystemGamma();
                        break;
                case UnmapNotify:
                        // window iconified/rolledup/whatever
                        vid_hidden = true;
-                       vid_activewindow = false;
                        VID_RestoreSystemGamma();
                        break;
                case FocusIn:
@@ -493,7 +492,7 @@ static int GL_OpenLibrary(const char *name)
                Con_Printf("Unable to open symbol list for %s\n", name);
                return false;
        }
-       strcpy(gl_driver, name);
+       strlcpy(gl_driver, name, sizeof(gl_driver));
        return true;
 }
 
@@ -538,8 +537,7 @@ void signal_handler(int sig)
 {
        Con_Printf("Received signal %d, exiting...\n", sig);
        VID_RestoreSystemGamma();
-       Sys_Quit();
-       exit(0);
+       Sys_Quit(1);
 }
 
 void InitSig(void)
@@ -610,11 +608,11 @@ void VID_Init(void)
 #endif
        InitSig(); // trap evil signals
 // COMMANDLINEOPTION: Input: -nomouse disables mouse support (see also vid_mouse cvar)
-       if (COM_CheckParm ("-nomouse") || COM_CheckParm("-safe"))
+       if (COM_CheckParm ("-nomouse"))
                mouse_avail = false;
 }
 
-void VID_BuildGLXAttrib(int *attrib, int stencil)
+void VID_BuildGLXAttrib(int *attrib, qboolean stencil, qboolean stereobuffer)
 {
        *attrib++ = GLX_RGBA;
        *attrib++ = GLX_RED_SIZE;*attrib++ = 1;
@@ -628,10 +626,12 @@ void VID_BuildGLXAttrib(int *attrib, int stencil)
                *attrib++ = GLX_STENCIL_SIZE;*attrib++ = 8;
                *attrib++ = GLX_ALPHA_SIZE;*attrib++ = 1;
        }
+       if (stereobuffer)
+               *attrib++ = GLX_STEREO;
        *attrib++ = None;
 }
 
-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;
        int attrib[32];
@@ -689,7 +689,7 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate
                return false;
        }
 
-       VID_BuildGLXAttrib(attrib, bpp == 32);
+       VID_BuildGLXAttrib(attrib, bpp == 32, stereobuffer);
        visinfo = qglXChooseVisual(vidx11_display, vidx11_screen, attrib);
        if (!visinfo)
        {