|
|
1.1 root 1: /*
2: SDL - Simple DirectMedia Layer
3: Copyright (C) 1997-2004 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: [email protected]
21: */
22:
23: #ifdef SAVE_RCSID
24: static char rcsid =
25: "@(#) $Id: SDL_syswm.h,v 1.1.1.1 2005/11/18 23:23:31 rswindell Exp $";
26: #endif
27:
28: /* Include file for SDL custom system window manager hooks */
29:
30: #ifndef _SDL_syswm_h
31: #define _SDL_syswm_h
32:
33: #include "SDL_version.h"
34:
35: #include "begin_code.h"
36: /* Set up for C function definitions, even when using C++ */
37: #ifdef __cplusplus
38: extern "C" {
39: #endif
40:
41: /* Your application has access to a special type of event 'SDL_SYSWMEVENT',
42: which contains window-manager specific information and arrives whenever
43: an unhandled window event occurs. This event is ignored by default, but
44: you can enable it with SDL_EventState()
45: */
46: #ifdef SDL_PROTOTYPES_ONLY
47: struct SDL_SysWMinfo;
48: typedef struct SDL_SysWMinfo SDL_SysWMinfo;
49: #else
50:
51: /* This is the structure for custom window manager events */
52: #if (defined(unix) || defined(__unix__) || defined(_AIX) || defined(__OpenBSD__) || defined(__NetBSD__)) && \
53: (!defined(DISABLE_X11) && !defined(__CYGWIN32__) && !defined(ENABLE_NANOX) && \
54: !defined(__QNXNTO__))
55: /* AIX is unix, of course, but the native compiler CSet doesn't define unix */
56: #include <X11/Xlib.h>
57: #include <X11/Xatom.h>
58:
59: /* These are the various supported subsystems under UNIX */
60: typedef enum {
61: SDL_SYSWM_X11
62: } SDL_SYSWM_TYPE;
63:
64: /* The UNIX custom event structure */
65: struct SDL_SysWMmsg {
66: SDL_version version;
67: SDL_SYSWM_TYPE subsystem;
68: union {
69: XEvent xevent;
70: } event;
71: };
72:
73: /* The UNIX custom window manager information structure.
74: When this structure is returned, it holds information about which
75: low level system it is using, and will be one of SDL_SYSWM_TYPE.
76: */
77: typedef struct SDL_SysWMinfo {
78: SDL_version version;
79: SDL_SYSWM_TYPE subsystem;
80: union {
81: struct {
82: Display *display; /* The X11 display */
83: Window window; /* The X11 display window */
84: /* These locking functions should be called around
85: any X11 functions using the display variable.
86: They lock the event thread, so should not be
87: called around event functions or from event filters.
88: */
89: void (*lock_func)(void);
90: void (*unlock_func)(void);
91:
92: /* Introduced in SDL 1.0.2 */
93: Window fswindow; /* The X11 fullscreen window */
94: Window wmwindow; /* The X11 managed input window */
95: } x11;
96: } info;
97: } SDL_SysWMinfo;
98:
99: #elif defined(ENABLE_NANOX)
100: #include <microwin/nano-X.h>
101:
102: /* The generic custom event structure */
103: struct SDL_SysWMmsg {
104: SDL_version version;
105: int data;
106: };
107:
108: /* The windows custom window manager information structure */
109: typedef struct SDL_SysWMinfo {
110: SDL_version version ;
111: GR_WINDOW_ID window ; /* The display window */
112: } SDL_SysWMinfo;
113:
114: #elif defined(WIN32)
115: #define WIN32_LEAN_AND_MEAN
116: #include <windows.h>
117:
118: /* The windows custom event structure */
119: struct SDL_SysWMmsg {
120: SDL_version version;
121: HWND hwnd; /* The window for the message */
122: UINT msg; /* The type of message */
123: WPARAM wParam; /* WORD message parameter */
124: LPARAM lParam; /* LONG message parameter */
125: };
126:
127: /* The windows custom window manager information structure */
128: typedef struct SDL_SysWMinfo {
129: SDL_version version;
130: HWND window; /* The Win32 display window */
131: HGLRC hglrc; /* The OpenGL context, if any */
132: } SDL_SysWMinfo;
133:
134: #elif defined(__riscos__)
135:
136: /* RISC OS custom event structure */
137: struct SDL_SysWMmsg {
138: SDL_version version;
139: int eventCode; /* The window for the message */
140: int pollBlock[64];
141: };
142:
143: /* The RISC OS custom window manager information structure */
144: typedef struct SDL_SysWMinfo {
145: SDL_version version;
146: int wimpVersion; /* Wimp version running under */
147: int taskHandle; /* The RISC OS task handle */
148: int window; /* The RISC OS display window */
149: } SDL_SysWMinfo;
150:
151: #elif defined(__QNXNTO__)
152: #include <sys/neutrino.h>
153: #include <Ph.h>
154:
155: /* The QNX custom event structure */
156: struct SDL_SysWMmsg {
157: SDL_version version;
158: int data;
159: };
160:
161: /* The QNX custom window manager information structure */
162: typedef struct SDL_SysWMinfo {
163: SDL_version version;
164: int data;
165: } SDL_SysWMinfo;
166:
167: #else
168:
169: /* The generic custom event structure */
170: struct SDL_SysWMmsg {
171: SDL_version version;
172: int data;
173: };
174:
175: /* The generic custom window manager information structure */
176: typedef struct SDL_SysWMinfo {
177: SDL_version version;
178: int data;
179: } SDL_SysWMinfo;
180:
181: #endif /* OS type */
182:
183: #endif /* SDL_PROTOTYPES_ONLY */
184:
185: /* Function prototypes */
186: /*
187: * This function gives you custom hooks into the window manager information.
188: * It fills the structure pointed to by 'info' with custom information and
189: * returns 1 if the function is implemented. If it's not implemented, or
190: * the version member of the 'info' structure is invalid, it returns 0.
191: *
192: * You typically use this function like this:
193: * SDL_SysWMInfo info;
194: * SDL_VERSION(&info.version);
195: * if ( SDL_GetWMInfo(&info) ) { ... }
196: */
197: extern DECLSPEC int SDLCALL SDL_GetWMInfo(SDL_SysWMinfo *info);
198:
199:
200: /* Ends C function definitions when using C++ */
201: #ifdef __cplusplus
202: }
203: #endif
204: #include "close_code.h"
205:
206: #endif /* _SDL_syswm_h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.