From 81fd7c227790247a09d3daffe5b994f274c9be44 Mon Sep 17 00:00:00 2001 From: Joseph Carter Date: Fri, 26 May 2000 12:32:45 +0000 Subject: [PATCH] DGA seems to work... Something done recently by someone (loring or bill) caused Voodoo3 users to get a black mouse cursor that kept getting warped to the center of the screen.. It was rather ugly and hard to play. So I added DGA. That made the mouse cursor blue and stay where it was. So I moved the XGrabPointer to after the XWarpPointer, problem seems to be fixed. I hope this works for someone other than me. =p --- configure.in | 29 +++++++++++++++++++++++++++++ source/Makefile.am | 4 ++-- source/in_x11.c | 16 ++++++++-------- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/configure.in b/configure.in index d5a98f0..5c44a7d 100644 --- a/configure.in +++ b/configure.in @@ -297,6 +297,22 @@ if test "x$HAVE_VIDMODE" != xno; then CPPFLAGS="$save_CPPFLAGS" fi +dnl Check for DGA support +AC_ARG_ENABLE(DGA, +[ --enable-DGA use XFree86 DGA extension, if available], +HAVE_DGA=$enable_DGA, HAVE_DGA=auto) +if test "x$HAVE_VIDMODE" = xyes; then + if test "x$HAVE_DGA" != xno; then + save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$X_CFLAGS $CPPFLAGS" + AC_CHECK_HEADER(X11/extensions/xf86dga.h, HAVE_DGA=yes, HAVE_DGA=no) + AC_CHECK_HEADER(X11/extensions/xf86vmode.h, qwfoo=qwfoo, HAVE_DGA=no) + CPPFLAGS="$save_CPPFLAGS" + else + HAVE_DGA=no + fi +fi + dnl Checks for GLX support AC_ARG_WITH(glx, [ --with-glx[=DIR] use GLX with libraries found in DIR], @@ -436,6 +452,19 @@ else fi AC_SUBST(VIDMODE_LIBS) +dnl Make sure DGA works +if test "x$HAVE_DGA" = xyes; then + AC_CHECK_LIB(Xxf86dga, XF86DGAQueryVersion,qwfoo=qwfoo, + HAVE_DGA=no, [$X_LIBS -lXext -lX11 $X_EXTRA_LIBS]) +fi +if test "x$HAVE_DGA" != xyes; then + DGA_LIBS="" +else + AC_DEFINE(HAVE_DGA) + DGA_LIBS="-lXxf86dga" +fi +AC_SUBST(DGA_LIBS) + dnl ================================================================== dnl Checks for system type dnl ================================================================== diff --git a/source/Makefile.am b/source/Makefile.am index 45d003e..2a8ee58 100644 --- a/source/Makefile.am +++ b/source/Makefile.am @@ -102,8 +102,8 @@ qf_server_LDADD= -L. -lqfsys_sv $(NET_LIBS) qf_client_mgl_LDADD= $(MGL_LIBS) $(CLIENT_LIBS) qf_client_ggi_LDADD= $(GGI_LIBS) $(CLIENT_LIBS) qf_client_svga_LDADD= $(SVGA_LIBS) $(CLIENT_LIBS) -qf_client_x11_LDADD= $(X_PRE_LIBS) $(VIDMODE_LIBS) $(X_LIBS) -lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(CLIENT_LIBS) -qf_client_glx_LDADD= $(GLX_LIBS) $(X_PRE_LIBS) $(VIDMODE_LIBS) $(X_LIBS) -lX11 $(X_EXTRA_LIBS) $(CLIENT_LIBS) +qf_client_x11_LDADD= $(X_PRE_LIBS) $(VIDMODE_LIBS) $(DGA_LIBS) $(X_LIBS) -lX11 $(X_EXTRA_LIBS) $(X_SHM_LIB) $(CLIENT_LIBS) +qf_client_glx_LDADD= $(GLX_LIBS) $(X_PRE_LIBS) $(VIDMODE_LIBS) $(DGA_LIBS) $(X_LIBS) -lX11 $(X_EXTRA_LIBS) $(CLIENT_LIBS) qf_client_wgl_LDADD= $(CLIENT_LIBS) qf_server_DEPENDENCIES=libqfsys_sv.a diff --git a/source/in_x11.c b/source/in_x11.c index 6eeeff4..58b4bd4 100644 --- a/source/in_x11.c +++ b/source/in_x11.c @@ -43,7 +43,7 @@ #include #include -#ifdef HAS_DGA +#ifdef HAVE_DGA #include #include #endif @@ -68,7 +68,7 @@ cvar_t *_windowed_mouse; cvar_t *m_filter; -#ifdef HAS_DGA +#ifdef HAVE_DGA cvar_t *in_dgamouse; cvar_t *vid_dga_mouseaccel; #endif @@ -295,7 +295,7 @@ center_pointer(void) static void event_motion(XEvent *event) { -#ifdef HAS_DGA +#ifdef HAVE_DGA if (in_dgamouse->value) { mouse_x += event->xmotion.x_root * vid_dga_mouseaccel->value; mouse_y += event->xmotion.y_root * vid_dga_mouseaccel->value; @@ -428,7 +428,7 @@ IN_Shutdown(void) nullcursor = None; } -#ifdef HAS_DGA +#ifdef HAVE_DGA XF86DGADirectVideo(x_disp, DefaultScreen(x_disp), 0); #endif } @@ -461,7 +461,7 @@ IN_Init(void) _windowed_mouse = Cvar_Get ("_windowed_mouse","0",CVAR_ARCHIVE,"None"); m_filter = Cvar_Get ("m_filter","0",CVAR_ARCHIVE,"None"); -#ifdef HAS_DGA +#ifdef HAVE_DGA vid_dga_mouseaccel = Cvar_Get ("vid_dga_mouseaccel","1",CVAR_ARCHIVE, "None"); @@ -479,12 +479,12 @@ IN_Init(void) XGrabKeyboard (x_disp, x_win, True, GrabModeAsync, GrabModeAsync, CurrentTime); - XGrabPointer (x_disp, x_win, True, MOUSE_MASK, GrabModeAsync, - GrabModeAsync, x_win, None, CurrentTime); - XWarpPointer (x_disp, None, x_win, 0, 0, 0, 0, scr_width, scr_height); + XGrabPointer (x_disp, x_win, True, MOUSE_MASK, GrabModeAsync, + GrabModeAsync, x_win, None, CurrentTime); + in_dgamouse = Cvar_Get ("in_dgamouse", "1", CVAR_ROM, "1 if you have DGA mouse support"); } else