This repository has been archived by the owner on Feb 11, 2021. It is now read-only.
/
SDL_syswm.h
262 lines (226 loc) · 6.27 KB
1
2
/*
SDL - Simple DirectMedia Layer
3
Copyright (C) 1997-2009 Sam Lantinga
4
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Lesser General Public
7
License as published by the Free Software Foundation; either
8
version 2.1 of the License, or (at your option) any later version.
9
10
11
12
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
13
Lesser General Public License for more details.
14
15
16
17
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
18
19
Sam Lantinga
20
slouken@libsdl.org
21
22
*/
23
/**
24
25
26
* \file SDL_syswm.h
*
* Include file for SDL custom system window manager hooks.
27
*/
28
29
30
31
#ifndef _SDL_syswm_h
#define _SDL_syswm_h
32
#include "SDL_stdinc.h"
33
#include "SDL_error.h"
34
#include "SDL_video.h"
35
36
37
38
39
#include "SDL_version.h"
#include "begin_code.h"
/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
40
/* *INDENT-OFF* */
41
extern "C" {
42
/* *INDENT-ON* */
43
44
#endif
45
46
47
48
49
50
51
52
/**
* \file SDL_syswm.h
*
* Your application has access to a special type of event ::SDL_SYSWMEVENT,
* which contains window-manager specific information and arrives whenever
* an unhandled window event occurs. This event is ignored by default, but
* you can enable it with SDL_EventState().
*/
53
54
55
56
#ifdef SDL_PROTOTYPES_ONLY
struct SDL_SysWMinfo;
#else
57
/* This is the structure for custom window manager events */
58
#if defined(SDL_VIDEO_DRIVER_X11)
59
#if defined(__APPLE__) && defined(__MACH__)
60
/* conflicts with Quickdraw.h */
61
62
63
#define Cursor X11Cursor
#endif
64
65
66
#include <X11/Xlib.h>
#include <X11/Xatom.h>
67
#if defined(__APPLE__) && defined(__MACH__)
68
/* matches the re-define above */
69
70
71
#undef Cursor
#endif
72
73
74
/**
* These are the various supported subsystems under UNIX.
*/
75
76
77
typedef enum
{
SDL_SYSWM_X11
78
79
} SDL_SYSWM_TYPE;
80
81
82
/**
* The UNIX custom event structure.
*/
83
84
85
86
87
88
89
90
struct SDL_SysWMmsg
{
SDL_version version;
SDL_SYSWM_TYPE subsystem;
union
{
XEvent xevent;
} event;
91
92
};
93
94
95
96
97
/**
* The UNIX custom window manager information structure.
*
* When this structure is returned, it holds information about which
* low level system it is using, and will be one of SDL_SYSWM_TYPE.
98
*/
99
100
101
102
103
104
105
106
struct SDL_SysWMinfo
{
SDL_version version;
SDL_SYSWM_TYPE subsystem;
union
{
struct
{
107
108
109
110
111
112
113
Display *display; /**< The X11 display */
Window window; /**< The X11 display window */
/**
* These locking functions should be called around
* any X11 functions using the display variable.
* They lock the event thread, so should not be
* called around event functions or from event filters.
114
*/
115
/*@{*/
116
117
void (*lock_func) (void);
void (*unlock_func) (void);
118
/*@}*/
119
120
121
122
123
124
125
126
/**
* Introduced in SDL 1.0.2.
*/
/*@{*/
Window fswindow; /**< The X11 fullscreen window */
Window wmwindow; /**< The X11 managed input window */
/*@}*/
127
128
129
} x11;
} info;
};
130
131
#elif defined(SDL_VIDEO_DRIVER_WIN32)
132
133
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
134
135
136
137
/**
* The windows custom event structure.
*/
138
139
140
struct SDL_SysWMmsg
{
SDL_version version;
141
142
143
144
HWND hwnd; /**< The window for the message */
UINT msg; /**< The type of message */
WPARAM wParam; /**< WORD message parameter */
LPARAM lParam; /**< LONG message parameter */
145
146
};
147
148
149
/**
* The windows custom window manager information structure.
*/
150
151
152
struct SDL_SysWMinfo
{
SDL_version version;
153
HWND window; /**< The Win32 display window */
154
};
155
156
#elif defined(SDL_VIDEO_DRIVER_RISCOS)
157
158
159
160
/**
* RISC OS custom event structure.
*/
161
162
163
struct SDL_SysWMmsg
{
SDL_version version;
164
int eventCode; /**< The window for the message */
165
int pollBlock[64];
166
167
};
168
169
170
/**
* The RISC OS custom window manager information structure.
*/
171
172
173
struct SDL_SysWMinfo
{
SDL_version version;
174
175
176
int wimpVersion; /**< Wimp version running under */
int taskHandle; /**< The RISC OS task handle */
int window; /**< The RISC OS display window */
177
};
178
179
#elif defined(SDL_VIDEO_DRIVER_PHOTON) || defined(SDL_VIDEO_DRIVER_QNXGF)
180
#include <sys/neutrino.h>
181
182
183
#if defined(SDL_VIDEO_OPENGL_ES)
#include <gf/gf.h>
#endif /* SDL_VIDEO_OPENGL_ES */
184
185
#include <Ph.h>
186
187
188
/**
* The QNX custom event structure.
*/
189
190
191
192
struct SDL_SysWMmsg
{
SDL_version version;
int data;
193
194
};
195
196
197
/**
* The QNX Photon custom window manager information structure.
*/
198
199
200
201
202
struct SDL_SysWMinfo
{
SDL_version version;
int data;
};
203
204
205
#else
206
207
208
/**
* The generic custom event structure.
*/
209
210
211
212
struct SDL_SysWMmsg
{
SDL_version version;
int data;
213
214
};
215
216
217
/**
* The generic custom window manager information structure.
*/
218
219
220
221
222
struct SDL_SysWMinfo
{
SDL_version version;
int data;
};
223
224
#endif /* video driver type */
225
226
227
#endif /* SDL_PROTOTYPES_ONLY */
228
229
typedef struct SDL_SysWMinfo SDL_SysWMinfo;
230
/* Function prototypes */
231
/**
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
* \brief This function allows access to driver-dependent window information.
*
* \param windowID The window about which information is being requested
* \param info This structure must be initialized with the SDL version, and is
* then filled in with information about the given window.
*
* \return SDL_TRUE if the function is implemented and the version member of
* the \c info struct is valid, SDL_FALSE otherwise.
*
* You typically use this function like this:
* \code
* SDL_SysWMInfo info;
* SDL_VERSION(&info.version);
* if ( SDL_GetWindowWMInfo(&info) ) { ... }
* \endcode
247
*/
248
249
extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_WindowID windowID,
SDL_SysWMinfo * info);
250
251
252
253
/* Ends C function definitions when using C++ */
#ifdef __cplusplus
254
/* *INDENT-OFF* */
255
}
256
/* *INDENT-ON* */
257
258
259
260
#endif
#include "close_code.h"
#endif /* _SDL_syswm_h */
261
262
/* vi: set ts=4 sw=4 expandtab: */