|
|
1.1 root 1: /*
2: SDL - Simple DirectMedia Layer
1.1.1.2 ! root 3: Copyright (C) 1997-2006 Sam Lantinga
1.1 root 4:
5: This library is free software; you can redistribute it and/or
1.1.1.2 ! root 6: modify it under the terms of the GNU Lesser General Public
1.1 root 7: License as published by the Free Software Foundation; either
1.1.1.2 ! root 8: version 2.1 of the License, or (at your option) any later version.
1.1 root 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
1.1.1.2 ! root 13: Lesser General Public License for more details.
1.1 root 14:
1.1.1.2 ! root 15: You should have received a copy of the GNU Lesser General Public
! 16: License along with this library; if not, write to the Free Software
! 17: Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1.1 root 18:
19: Sam Lantinga
20: [email protected]
21: */
22:
23: /* Include file for SDL custom system window manager hooks */
24:
25: #ifndef _SDL_syswm_h
26: #define _SDL_syswm_h
27:
1.1.1.2 ! root 28: #include "SDL_stdinc.h"
! 29: #include "SDL_error.h"
1.1 root 30: #include "SDL_version.h"
31:
32: #include "begin_code.h"
33: /* Set up for C function definitions, even when using C++ */
34: #ifdef __cplusplus
35: extern "C" {
36: #endif
37:
38: /* Your application has access to a special type of event 'SDL_SYSWMEVENT',
39: which contains window-manager specific information and arrives whenever
40: an unhandled window event occurs. This event is ignored by default, but
41: you can enable it with SDL_EventState()
42: */
43: #ifdef SDL_PROTOTYPES_ONLY
44: struct SDL_SysWMinfo;
45: typedef struct SDL_SysWMinfo SDL_SysWMinfo;
46: #else
47:
48: /* This is the structure for custom window manager events */
1.1.1.2 ! root 49: #if defined(SDL_VIDEO_DRIVER_X11)
! 50: #if defined(__APPLE__) && defined(__MACH__)
! 51: /* conflicts with Quickdraw.h */
! 52: #define Cursor X11Cursor
! 53: #endif
! 54:
1.1 root 55: #include <X11/Xlib.h>
56: #include <X11/Xatom.h>
57:
1.1.1.2 ! root 58: #if defined(__APPLE__) && defined(__MACH__)
! 59: /* matches the re-define above */
! 60: #undef Cursor
! 61: #endif
! 62:
1.1 root 63: /* These are the various supported subsystems under UNIX */
64: typedef enum {
65: SDL_SYSWM_X11
66: } SDL_SYSWM_TYPE;
67:
68: /* The UNIX custom event structure */
69: struct SDL_SysWMmsg {
70: SDL_version version;
71: SDL_SYSWM_TYPE subsystem;
72: union {
73: XEvent xevent;
74: } event;
75: };
76:
77: /* The UNIX custom window manager information structure.
78: When this structure is returned, it holds information about which
79: low level system it is using, and will be one of SDL_SYSWM_TYPE.
80: */
81: typedef struct SDL_SysWMinfo {
82: SDL_version version;
83: SDL_SYSWM_TYPE subsystem;
84: union {
85: struct {
86: Display *display; /* The X11 display */
87: Window window; /* The X11 display window */
88: /* These locking functions should be called around
1.1.1.2 ! root 89: any X11 functions using the display variable,
! 90: but not the gfxdisplay variable.
1.1 root 91: They lock the event thread, so should not be
92: called around event functions or from event filters.
93: */
94: void (*lock_func)(void);
95: void (*unlock_func)(void);
96:
97: /* Introduced in SDL 1.0.2 */
98: Window fswindow; /* The X11 fullscreen window */
99: Window wmwindow; /* The X11 managed input window */
1.1.1.2 ! root 100:
! 101: /* Introduced in SDL 1.2.12 */
! 102: Display *gfxdisplay; /* The X11 display to which rendering is done */
1.1 root 103: } x11;
104: } info;
105: } SDL_SysWMinfo;
106:
1.1.1.2 ! root 107: #elif defined(SDL_VIDEO_DRIVER_NANOX)
1.1 root 108: #include <microwin/nano-X.h>
109:
110: /* The generic custom event structure */
111: struct SDL_SysWMmsg {
112: SDL_version version;
113: int data;
114: };
115:
116: /* The windows custom window manager information structure */
117: typedef struct SDL_SysWMinfo {
118: SDL_version version ;
119: GR_WINDOW_ID window ; /* The display window */
120: } SDL_SysWMinfo;
121:
1.1.1.2 ! root 122: #elif defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || defined(SDL_VIDEO_DRIVER_GAPI)
1.1 root 123: #define WIN32_LEAN_AND_MEAN
124: #include <windows.h>
125:
126: /* The windows custom event structure */
127: struct SDL_SysWMmsg {
128: SDL_version version;
129: HWND hwnd; /* The window for the message */
130: UINT msg; /* The type of message */
131: WPARAM wParam; /* WORD message parameter */
132: LPARAM lParam; /* LONG message parameter */
133: };
134:
135: /* The windows custom window manager information structure */
136: typedef struct SDL_SysWMinfo {
137: SDL_version version;
138: HWND window; /* The Win32 display window */
139: HGLRC hglrc; /* The OpenGL context, if any */
140: } SDL_SysWMinfo;
141:
1.1.1.2 ! root 142: #elif defined(SDL_VIDEO_DRIVER_RISCOS)
1.1 root 143:
144: /* RISC OS custom event structure */
145: struct SDL_SysWMmsg {
146: SDL_version version;
147: int eventCode; /* The window for the message */
148: int pollBlock[64];
149: };
150:
151: /* The RISC OS custom window manager information structure */
152: typedef struct SDL_SysWMinfo {
153: SDL_version version;
154: int wimpVersion; /* Wimp version running under */
155: int taskHandle; /* The RISC OS task handle */
156: int window; /* The RISC OS display window */
157: } SDL_SysWMinfo;
158:
1.1.1.2 ! root 159: #elif defined(SDL_VIDEO_DRIVER_PHOTON)
1.1 root 160: #include <sys/neutrino.h>
161: #include <Ph.h>
162:
163: /* The QNX custom event structure */
164: struct SDL_SysWMmsg {
165: SDL_version version;
166: int data;
167: };
168:
169: /* The QNX custom window manager information structure */
170: typedef struct SDL_SysWMinfo {
171: SDL_version version;
172: int data;
173: } SDL_SysWMinfo;
174:
175: #else
176:
177: /* The generic custom event structure */
178: struct SDL_SysWMmsg {
179: SDL_version version;
180: int data;
181: };
182:
183: /* The generic custom window manager information structure */
184: typedef struct SDL_SysWMinfo {
185: SDL_version version;
186: int data;
187: } SDL_SysWMinfo;
188:
1.1.1.2 ! root 189: #endif /* video driver type */
1.1 root 190:
191: #endif /* SDL_PROTOTYPES_ONLY */
192:
193: /* Function prototypes */
194: /*
195: * This function gives you custom hooks into the window manager information.
196: * It fills the structure pointed to by 'info' with custom information and
197: * returns 1 if the function is implemented. If it's not implemented, or
198: * the version member of the 'info' structure is invalid, it returns 0.
199: *
200: * You typically use this function like this:
201: * SDL_SysWMInfo info;
202: * SDL_VERSION(&info.version);
203: * if ( SDL_GetWMInfo(&info) ) { ... }
204: */
205: extern DECLSPEC int SDLCALL SDL_GetWMInfo(SDL_SysWMinfo *info);
206:
207:
208: /* Ends C function definitions when using C++ */
209: #ifdef __cplusplus
210: }
211: #endif
212: #include "close_code.h"
213:
214: #endif /* _SDL_syswm_h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.