src/video/x11/SDL_x11dga.c

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. X11_EnableDGAMouse
  2. X11_CheckDGAMouse
  3. X11_DisableDGAMouse

   1 /*
   2     SDL - Simple DirectMedia Layer
   3     Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
   4 
   5     This library is free software; you can redistribute it and/or
   6     modify it under the terms of the GNU Library General Public
   7     License as published by the Free Software Foundation; either
   8     version 2 of the License, or (at your option) any later version.
   9 
  10     This library is distributed in the hope that it will be useful,
  11     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13     Library General Public License for more details.
  14 
  15     You should have received a copy of the GNU Library General Public
  16     License along with this library; if not, write to the Free
  17     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18 
  19     Sam Lantinga
  20     slouken@devolution.com
  21 */
  22 
  23 #ifdef SAVE_RCSID
  24 static char rcsid =
  25  "@(#) $Id: SDL_x11dga.c,v 1.1.2.12 2001/02/18 08:45:45 hercules Exp $";
  26 #endif
  27 
  28 /* This is currently only used to enable DGA mouse.
  29    The new fullscreen code makes it very difficult to handle DGA dynamically.
  30    There will be a completely separate DGA driver that is fullscreen-only.
  31 */
  32 
  33 #include <stdlib.h>             /* For getenv() */
  34 #include "SDL_video.h"
  35 #include "SDL_cursor_c.h"
  36 #include "SDL_x11dga_c.h"
  37 
  38 /* Global for the error handler */
  39 int dga_event, dga_error = -1;
  40 
  41 void X11_EnableDGAMouse(_THIS)
     /* [<][>][^][v][top][bottom][index][help] */
  42 {
  43 #ifdef XFREE86_DGAMOUSE
  44     int dga_major, dga_minor;
  45     int use_dgamouse;
  46     const char *env_use_dgamouse;
  47 
  48     /* Check configuration to see if we should use DGA mouse */
  49 #ifdef DEFAULT_DGAMOUSE
  50     use_dgamouse = 1;
  51 #else
  52     use_dgamouse = 0;
  53 #endif
  54     env_use_dgamouse = getenv("SDL_VIDEO_X11_DGAMOUSE");
  55     if ( env_use_dgamouse ) {
  56         use_dgamouse = atoi(env_use_dgamouse);
  57     }
  58     /* Check for buggy X servers */
  59     if ( use_dgamouse && BUGGY_XFREE86(==, 4000) ) {
  60         use_dgamouse = 0;
  61     }
  62     /* Only use DGA mouse if the cursor is not showing (in relative mode) */
  63     if ( use_dgamouse && local_X11 && !(using_dga & DGA_MOUSE) &&
  64          XF86DGAQueryExtension(SDL_Display, &dga_event, &dga_error) &&
  65          XF86DGAQueryVersion(SDL_Display, &dga_major, &dga_minor) ) {
  66         if ( XF86DGADirectVideo(SDL_Display, SDL_Screen, XF86DGADirectMouse) ) {
  67             using_dga |= DGA_MOUSE;
  68         }
  69     }
  70 #endif /* XFREE86_DGAMOUSE */
  71 }
  72 
  73 /* Argh.  Glide resets DGA mouse mode when it makes the context current! */
  74 void X11_CheckDGAMouse(_THIS)
     /* [<][>][^][v][top][bottom][index][help] */
  75 {
  76 #ifdef XFREE86_DGAMOUSE
  77     int flags;
  78 
  79     if ( using_dga & DGA_MOUSE ) {
  80         XF86DGAQueryDirectVideo(SDL_Display, SDL_Screen, &flags);
  81         if ( ! (flags & XF86DGADirectMouse) ) {
  82                 XF86DGADirectVideo(SDL_Display,SDL_Screen,XF86DGADirectMouse);
  83         }
  84     }
  85 #endif
  86 }
  87 
  88 void X11_DisableDGAMouse(_THIS)
     /* [<][>][^][v][top][bottom][index][help] */
  89 {
  90 #ifdef XFREE86_DGAMOUSE
  91     if ( using_dga & DGA_MOUSE ) {
  92         XF86DGADirectVideo(SDL_Display, SDL_Screen, 0);
  93         using_dga &= ~DGA_MOUSE;
  94     }
  95 #endif /* XFREE86_DGAMOUSE */
  96 }

/* [<][>][^][v][top][bottom][index][help] */