]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_agl.c
fix warnings
[xonotic/darkplaces.git] / vid_agl.c
index 984219b1e08973ae2d29a43a3ebf78242bbb7a7c..88e33a16e68e8a60971561f4af2f8063c49aec89 100644 (file)
--- a/vid_agl.c
+++ b/vid_agl.c
@@ -60,8 +60,8 @@ CGLContextObj (*qCGLGetCurrentContext) (void);
 static qboolean multithreadedgl;
 static qboolean mouse_avail = true;
 static qboolean vid_usingmouse = false;
+static qboolean vid_usinghidecursor = false;
 static qboolean vid_usingnoaccel = false;
-static float mouse_x, mouse_y;
 
 static qboolean vid_isfullscreen = false;
 static qboolean vid_usingvsync = false;
@@ -106,19 +106,21 @@ void VID_GetWindowSize (int *x, int *y, int *width, int *height)
        *height = scr_height;
 }
 
-static void IN_Activate( qboolean grab )
+void VID_SetMouse(qboolean fullscreengrab, qboolean relative, qboolean hidecursor)
 {
-       if (grab)
+       if (!mouse_avail || !window)
+               relative = hidecursor = false;
+
+       if (relative)
        {
                if(vid_usingmouse && (vid_usingnoaccel != !!apple_mouse_noaccel.integer))
-                       IN_Activate(false); // ungrab first!
-               if (!vid_usingmouse && mouse_avail && window)
+                       VID_SetMouse(false, false, false); // ungrab first!
+               if (!vid_usingmouse)
                {
                        Rect winBounds;
                        CGPoint winCenter;
 
                        SelectWindow(window);
-                       CGDisplayHideCursor(CGMainDisplayID());
 
                        // Put the mouse cursor at the center of the window
                        GetWindowBounds (window, kWindowContentRgn, &winBounds);
@@ -159,7 +161,6 @@ static void IN_Activate( qboolean grab )
                                }
                        }
 
-                       mouse_x = mouse_y = 0;
                        vid_usingmouse = true;
                        vid_usingnoaccel = !!apple_mouse_noaccel.integer;
                }
@@ -183,29 +184,26 @@ static void IN_Activate( qboolean grab )
                        }
 
                        CGAssociateMouseAndMouseCursorPosition(true);
-                       CGDisplayShowCursor(CGMainDisplayID());
 
                        vid_usingmouse = false;
                }
        }
+
+       if (vid_usinghidecursor != hidecursor)
+       {
+               vid_usinghidecursor = hidecursor;
+               if (hidecursor)
+                       CGDisplayHideCursor(CGMainDisplayID());
+               else
+                       CGDisplayShowCursor(CGMainDisplayID());
+       }
 }
 
 #define GAMMA_TABLE_SIZE 256
-void VID_Finish (qboolean allowmousegrab)
+void VID_Finish (void)
 {
-       qboolean vid_usemouse;
        qboolean vid_usevsync;
 
-       // handle the mouse state when windowed if that's changed
-       vid_usemouse = false;
-       if (allowmousegrab && vid_mouse.integer && !key_consoleactive && (key_dest != key_game || !cls.demoplayback))
-               vid_usemouse = true;
-       if (!vid_activewindow)
-               vid_usemouse = false;
-       if (vid_isfullscreen)
-               vid_usemouse = true;
-       IN_Activate(vid_usemouse);
-
        // handle changes of the vsync option
        vid_usevsync = (vid_vsync.integer && !cls.timedemo);
        if (vid_usingvsync != vid_usevsync)
@@ -410,7 +408,7 @@ void VID_Shutdown(void)
        if (context == NULL && window == NULL)
                return;
 
-       IN_Activate(false);
+       VID_SetMouse(false, false, false);
        VID_RestoreSystemGamma();
 
        if (context != NULL)
@@ -703,28 +701,14 @@ int VID_InitMode(int fullscreen, int width, int height, int bpp, int refreshrate
        if ((qglGetString = (const GLubyte* (GLAPIENTRY *)(GLenum name))GL_GetProcAddress("glGetString")) == NULL)
                Sys_Error("glGetString not found in %s", gl_driver);
 
-       gl_renderer = (const char *)qglGetString(GL_RENDERER);
-       gl_vendor = (const char *)qglGetString(GL_VENDOR);
-       gl_version = (const char *)qglGetString(GL_VERSION);
-       gl_extensions = (const char *)qglGetString(GL_EXTENSIONS);
        gl_platformextensions = "";
        gl_platform = "AGL";
        gl_videosyncavailable = true;
 
-       if (!gl_extensions)
-               gl_extensions = "";
-       if (!gl_platformextensions)
-               gl_platformextensions = "";
-
-       Con_DPrintf("GL_VENDOR: %s\n", gl_vendor);
-       Con_DPrintf("GL_RENDERER: %s\n", gl_renderer);
-       Con_DPrintf("GL_VERSION: %s\n", gl_version);
-       Con_DPrintf("GL_EXTENSIONS: %s\n", gl_extensions);
-       Con_DPrintf("%s_EXTENSIONS: %s\n", gl_platform, gl_platformextensions);
-
        multithreadedgl = false;
        vid_isfullscreen = fullscreen;
        vid_usingmouse = false;
+       vid_usinghidecursor = false;
        vid_hidden = false;
        vid_activewindow = true;
        sound_active = true;
@@ -991,11 +975,19 @@ void Sys_SendKeyEvents(void)
                                        case kEventMouseDragged:
                                        {
                                                HIPoint deltaPos;
+                                               HIPoint windowPos;
 
                                                GetEventParameter(theEvent, kEventParamMouseDelta, typeHIPoint, NULL, sizeof(deltaPos), NULL, &deltaPos);
+                                               GetEventParameter(theEvent, kEventParamWindowMouseLocation, typeHIPoint, NULL, sizeof(windowPos), NULL, &windowPos);
 
-                                               mouse_x += deltaPos.x;
-                                               mouse_y += deltaPos.y;
+                                               if (vid_usingmouse)
+                                               {
+                                                       in_mouse_x += deltaPos.x;
+                                                       in_mouse_y += deltaPos.y;
+                                               }
+
+                                               in_windowmouse_x = windowPos.x;
+                                               in_windowmouse_y = windowPos.y;
                                                break;
                                        }
 
@@ -1128,11 +1120,4 @@ void Sys_SendKeyEvents(void)
 
 void IN_Move (void)
 {
-       if (mouse_avail)
-       {
-               in_mouse_x = mouse_x;
-               in_mouse_y = mouse_y;
-       }
-       mouse_x = 0;
-       mouse_y = 0;
 }