SDL_x11video.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:7k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. #ifdef SAVE_RCSID
  19. static char rcsid =
  20.  "@(#) $Id: SDL_x11video.h,v 1.4 2002/04/22 21:38:06 wmay Exp $";
  21. #endif
  22. #ifndef _SDL_x11video_h
  23. #define _SDL_x11video_h
  24. #include <X11/Xlib.h>
  25. #include <X11/Xutil.h>
  26. #include <X11/Xatom.h>
  27. #ifndef NO_SHARED_MEMORY
  28. #include <sys/ipc.h>
  29. #include <sys/shm.h>
  30. #include <X11/extensions/XShm.h>
  31. #endif
  32. #ifdef XFREE86_DGAMOUSE
  33. #include <XFree86/extensions/xf86dga.h>
  34. #endif
  35. #ifdef XFREE86_VM
  36. #include <XFree86/extensions/xf86vmode.h>
  37. #endif
  38. #ifdef HAVE_XIGXME
  39. #include <X11/extensions/xme.h>
  40. #endif
  41. #include <string.h>
  42. #include "SDL_mouse.h"
  43. #include "SDL_sysvideo.h"
  44. /* Hidden "this" pointer for the video functions */
  45. #define _THIS SDL_VideoDevice *this
  46. /* Private display data */
  47. struct SDL_PrivateVideoData {
  48.     int local_X11; /* Flag: true if local display */
  49.     Display *X11_Display; /* Used for events and window management */
  50.     Display *GFX_Display; /* Used for graphics and colormap stuff */
  51.     Visual *SDL_Visual; /* The visual used by our window */
  52.     Window WMwindow; /* Input window, managed by window manager */
  53.     Window FSwindow; /* Fullscreen window, completely unmanaged */
  54.     Window SDL_Window; /* Shared by both displays (no X security?) */
  55.     Atom WM_DELETE_WINDOW; /* "close-window" protocol atom */
  56.     WMcursor *BlankCursor; /* The invisible cursor */
  57.     char *SDL_windowid; /* Flag: true if we have been passed a window */
  58.     /* Direct Graphics Access extension information */
  59.     int using_dga;
  60. #ifndef NO_SHARED_MEMORY
  61.     /* MIT shared memory extension information */
  62.     int use_mitshm;
  63.     XShmSegmentInfo shminfo;
  64. #endif
  65.     /* The variables used for displaying graphics */
  66.     XImage *Ximage; /* The X image for our window */
  67.     GC gc; /* The graphic context for drawing */
  68.     /* The current width and height of the fullscreen mode */
  69.     int current_w;
  70.     int current_h;
  71.     /* Support for internal mouse warping */
  72.     struct {
  73.         int x;
  74.         int y;
  75.     } mouse_last;
  76.     struct {
  77.         int numerator;
  78.         int denominator;
  79.         int threshold;
  80.     } mouse_accel;
  81.     int mouse_relative;
  82.     /* The current list of available video modes */
  83.     SDL_Rect **modelist;
  84.     /* available visuals of interest to us, sorted deepest first */
  85.     struct {
  86. Visual *visual;
  87. int depth; /* number of significant bits/pixel */
  88. int bpp; /* pixel quantum in bits */
  89.     } visuals[2*5]; /* at most 2 entries for 8, 15, 16, 24, 32 */
  90.     int nvisuals;
  91.     Visual *vis; /* current visual in use */
  92.     int depth; /* current visual depth (not bpp) */
  93.     /* Variables used by the X11 video mode code */
  94. #ifdef XFREE86_VM
  95.     SDL_NAME(XF86VidModeModeInfo) saved_mode;
  96.     struct {
  97.         int x, y;
  98.     } saved_view;
  99. #endif
  100. #ifdef HAVE_XIGXME /* XiG XME fullscreen */
  101.     int use_xme;
  102.     XiGMiscResolutionInfo saved_res;
  103. #endif
  104.     int xinerama_x;
  105.     int xinerama_y;
  106.     int use_vidmode;
  107.     int currently_fullscreen;
  108.     /* Automatic mode switching support (entering/leaving fullscreen) */
  109.     Uint32 switch_waiting;
  110.     Uint32 switch_time;
  111.     /* Prevent too many XSync() calls */
  112.     int blit_queued;
  113.     /* Colormap handling */
  114.     Colormap DisplayColormap; /* The default display colormap */
  115.     Colormap XColorMap; /* The current window colormap */
  116.     int *XPixels; /* pixels value allocation counts */
  117.     float gamma_saved[3]; /* Saved gamma values for VidMode gamma */
  118.     int gamma_changed; /* flag: has VidMode gamma been modified? */
  119.     short *iconcolors; /* List of colors used by the icon */
  120. };
  121. /* Old variable names */
  122. #define local_X11 (this->hidden->local_X11)
  123. #define SDL_Display (this->hidden->X11_Display)
  124. #define GFX_Display (this->hidden->GFX_Display)
  125. #define SDL_Screen DefaultScreen(this->hidden->X11_Display)
  126. #define SDL_Visual (this->hidden->vis)
  127. #define SDL_Root RootWindow(SDL_Display, SDL_Screen)
  128. #define WMwindow (this->hidden->WMwindow)
  129. #define FSwindow (this->hidden->FSwindow)
  130. #define SDL_Window (this->hidden->SDL_Window)
  131. #define WM_DELETE_WINDOW (this->hidden->WM_DELETE_WINDOW)
  132. #define SDL_BlankCursor (this->hidden->BlankCursor)
  133. #define SDL_windowid (this->hidden->SDL_windowid)
  134. #define using_dga (this->hidden->using_dga)
  135. #define use_mitshm (this->hidden->use_mitshm)
  136. #define shminfo (this->hidden->shminfo)
  137. #define SDL_Ximage (this->hidden->Ximage)
  138. #define SDL_GC (this->hidden->gc)
  139. #define current_w (this->hidden->current_w)
  140. #define current_h (this->hidden->current_h)
  141. #define mouse_last (this->hidden->mouse_last)
  142. #define mouse_accel (this->hidden->mouse_accel)
  143. #define mouse_relative (this->hidden->mouse_relative)
  144. #define SDL_modelist (this->hidden->modelist)
  145. #define saved_mode (this->hidden->saved_mode)
  146. #define saved_view (this->hidden->saved_view)
  147. #define use_xme (this->hidden->use_xme)
  148. #define saved_res (this->hidden->saved_res)
  149. #define xinerama_x (this->hidden->xinerama_x)
  150. #define xinerama_y (this->hidden->xinerama_y)
  151. #define use_vidmode (this->hidden->use_vidmode)
  152. #define currently_fullscreen (this->hidden->currently_fullscreen)
  153. #define switch_waiting (this->hidden->switch_waiting)
  154. #define switch_time (this->hidden->switch_time)
  155. #define blit_queued (this->hidden->blit_queued)
  156. #define SDL_DisplayColormap (this->hidden->DisplayColormap)
  157. #define SDL_PrivateColormap (this->hidden->PrivateColormap)
  158. #define SDL_XColorMap (this->hidden->XColorMap)
  159. #define SDL_XPixels (this->hidden->XPixels)
  160. #define gamma_saved (this->hidden->gamma_saved)
  161. #define gamma_changed (this->hidden->gamma_changed)
  162. #define SDL_iconcolors (this->hidden->iconcolors)
  163. /* Some versions of XFree86 have bugs - detect if this is one of them */
  164. #define BUGGY_XFREE86(condition, buggy_version) 
  165. ((strcmp(ServerVendor(SDL_Display), "The XFree86 Project, Inc") == 0) && 
  166.  (VendorRelease(SDL_Display) condition buggy_version))
  167. #endif /* _SDL_x11video_h */