diff options
Diffstat (limited to 'distrib/sdl-1.2.15/src/video/x11/SDL_x11video.h')
-rw-r--r-- | distrib/sdl-1.2.15/src/video/x11/SDL_x11video.h | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/distrib/sdl-1.2.15/src/video/x11/SDL_x11video.h b/distrib/sdl-1.2.15/src/video/x11/SDL_x11video.h new file mode 100644 index 0000000..18cf497 --- /dev/null +++ b/distrib/sdl-1.2.15/src/video/x11/SDL_x11video.h @@ -0,0 +1,217 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2012 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +#ifndef _SDL_x11video_h +#define _SDL_x11video_h + +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/Xatom.h> + +#include "SDL_mouse.h" +#include "../SDL_sysvideo.h" + +#if SDL_VIDEO_DRIVER_X11_DGAMOUSE +#include "../Xext/extensions/xf86dga.h" +#endif +#if SDL_VIDEO_DRIVER_X11_XINERAMA +#include "../Xext/extensions/Xinerama.h" +#endif +#if SDL_VIDEO_DRIVER_X11_XRANDR +#include <X11/extensions/Xrandr.h> +#endif +#if SDL_VIDEO_DRIVER_X11_VIDMODE +#include "../Xext/extensions/xf86vmode.h" +#endif +#if SDL_VIDEO_DRIVER_X11_XME +#include "../Xext/extensions/xme.h" +#endif + +#include "SDL_x11dyn.h" + +/* Hidden "this" pointer for the video functions */ +#define _THIS SDL_VideoDevice *this + +/* Private display data */ +struct SDL_PrivateVideoData { + int local_X11; /* Flag: true if local display */ + Display *X11_Display; /* Used for events and window management */ + Display *GFX_Display; /* Used for graphics and colormap stuff */ + Visual *SDL_Visual; /* The visual used by our window */ + Window WMwindow; /* Input window, managed by window manager */ + Window FSwindow; /* Fullscreen window, completely unmanaged */ + Window SDL_Window; /* Shared by both displays (no X security?) */ + Atom WM_DELETE_WINDOW; /* "close-window" protocol atom */ + WMcursor *BlankCursor; /* The invisible cursor */ + XIM X11_IM; /* Used to communicate with the input method (IM) server */ + XIC X11_IC; /* Used for retaining the state, properties, and semantics of communication with the input method (IM) server */ + + char *SDL_windowid; /* Flag: true if we have been passed a window */ + + /* Direct Graphics Access extension information */ + int using_dga; + +#ifndef NO_SHARED_MEMORY + /* MIT shared memory extension information */ + int use_mitshm; + XShmSegmentInfo shminfo; +#endif + + /* The variables used for displaying graphics */ + XImage *Ximage; /* The X image for our window */ + GC gc; /* The graphic context for drawing */ + + /* The current width and height of the fullscreen mode */ + int window_w; + int window_h; + + /* Support for internal mouse warping */ + struct { + int x; + int y; + } mouse_last; + struct { + int numerator; + int denominator; + int threshold; + } mouse_accel; + int mouse_relative; + + /* The current list of available video modes */ + SDL_Rect **modelist; + + /* available visuals of interest to us, sorted deepest first */ + struct { + Visual *visual; + int depth; /* number of significant bits/pixel */ + int bpp; /* pixel quantum in bits */ + } visuals[2*5]; /* at most 2 entries for 8, 15, 16, 24, 32 */ + int nvisuals; + + Visual *vis; /* current visual in use */ + int depth; /* current visual depth (not bpp) */ + + /* Variables used by the X11 video mode code */ +#if SDL_VIDEO_DRIVER_X11_XINERAMA + SDL_NAME(XineramaScreenInfo) xinerama_info; +#endif +#if SDL_VIDEO_DRIVER_X11_XRANDR + XRRScreenConfiguration* screen_config; + int saved_size_id; + Rotation saved_rotation; +#endif +#if SDL_VIDEO_DRIVER_X11_VIDMODE + SDL_NAME(XF86VidModeModeInfo) saved_mode; + struct { + int x, y; + } saved_view; +#endif +#if SDL_VIDEO_DRIVER_X11_XME /* XiG XME fullscreen */ + XiGMiscResolutionInfo saved_res; +#endif + + int use_xinerama; + int use_xrandr; + int use_vidmode; + int use_xme; + int currently_fullscreen; + + /* Automatic mode switching support (entering/leaving fullscreen) */ + Uint32 switch_waiting; + Uint32 switch_time; + + /* Prevent too many XSync() calls */ + int blit_queued; + + /* Colormap handling */ + Colormap DisplayColormap; /* The default display colormap */ + Colormap XColorMap; /* The current window colormap */ + int *XPixels; /* pixels value allocation counts */ + float gamma_saved[3]; /* Saved gamma values for VidMode gamma */ + int gamma_changed; /* flag: has VidMode gamma been modified? */ + + short *iconcolors; /* List of colors used by the icon */ + + /* Screensaver settings */ + int allow_screensaver; +}; + +extern int X11_wmXAdjust; +extern int X11_wmYAdjust; + +/* Old variable names */ +#define local_X11 (this->hidden->local_X11) +#define SDL_Display (this->hidden->X11_Display) +#define GFX_Display (this->hidden->GFX_Display) +#define SDL_Screen DefaultScreen(this->hidden->X11_Display) +#define SDL_Visual (this->hidden->vis) +#define SDL_Root RootWindow(SDL_Display, SDL_Screen) +#define WMwindow (this->hidden->WMwindow) +#define FSwindow (this->hidden->FSwindow) +#define SDL_Window (this->hidden->SDL_Window) +#define WM_DELETE_WINDOW (this->hidden->WM_DELETE_WINDOW) +#define SDL_BlankCursor (this->hidden->BlankCursor) +#define SDL_IM (this->hidden->X11_IM) +#define SDL_IC (this->hidden->X11_IC) +#define SDL_windowid (this->hidden->SDL_windowid) +#define using_dga (this->hidden->using_dga) +#define use_mitshm (this->hidden->use_mitshm) +#define shminfo (this->hidden->shminfo) +#define SDL_Ximage (this->hidden->Ximage) +#define SDL_GC (this->hidden->gc) +#define window_w (this->hidden->window_w) +#define window_h (this->hidden->window_h) +#define mouse_last (this->hidden->mouse_last) +#define mouse_accel (this->hidden->mouse_accel) +#define mouse_relative (this->hidden->mouse_relative) +#define SDL_modelist (this->hidden->modelist) +#define xinerama_info (this->hidden->xinerama_info) +#define saved_mode (this->hidden->saved_mode) +#define saved_view (this->hidden->saved_view) +#define saved_res (this->hidden->saved_res) +#define screen_config (this->hidden->screen_config) +#define saved_size_id (this->hidden->saved_size_id) +#define saved_rotation (this->hidden->saved_rotation) +#define use_xinerama (this->hidden->use_xinerama) +#define use_vidmode (this->hidden->use_vidmode) +#define use_xrandr (this->hidden->use_xrandr) +#define use_xme (this->hidden->use_xme) +#define currently_fullscreen (this->hidden->currently_fullscreen) +#define switch_waiting (this->hidden->switch_waiting) +#define switch_time (this->hidden->switch_time) +#define blit_queued (this->hidden->blit_queued) +#define SDL_DisplayColormap (this->hidden->DisplayColormap) +#define SDL_PrivateColormap (this->hidden->PrivateColormap) +#define SDL_XColorMap (this->hidden->XColorMap) +#define SDL_XPixels (this->hidden->XPixels) +#define gamma_saved (this->hidden->gamma_saved) +#define gamma_changed (this->hidden->gamma_changed) +#define SDL_iconcolors (this->hidden->iconcolors) +#define allow_screensaver (this->hidden->allow_screensaver) + +/* Some versions of XFree86 have bugs - detect if this is one of them */ +#define BUGGY_XFREE86(condition, buggy_version) \ +((SDL_strcmp(ServerVendor(SDL_Display), "The XFree86 Project, Inc") == 0) && \ + (VendorRelease(SDL_Display) condition buggy_version)) + +#endif /* _SDL_x11video_h */ |