Skip to content

Commit 5540a38

Browse files
Merge pull request #20 from suve/update-sdlsyswm.inc-to-2.0.12
Update sdlsyswm.inc to 2.0.12
2 parents d5150cd + aeb47f9 commit 5540a38

File tree

1 file changed

+170
-102
lines changed

1 file changed

+170
-102
lines changed

sdlsyswm.inc

Lines changed: 170 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,63 @@
44
{$DEFINE SDL_VIDEO_DRIVER_WINDOWS}
55
{$ENDIF}
66

7-
{$IF DEFINED (LINUX) OR DEFINED(UNIX) AND NOT DEFINED(ANDROID)}
8-
{$IFNDEF DARWIN}
7+
{$IF DEFINED (LINUX) OR DEFINED(UNIX)}
8+
{$IF NOT (DEFINED(DARWIN) OR DEFINED(ANDROID))}
99
{$DEFINE SDL_VIDEO_DRIVER_X11}
1010
{$ENDIF}
1111
{$IFEND}
1212

13+
(*
14+
* Disabled because FPC does not ship a DirectFB unit.
15+
* If you have some working DirectDB bindings, feel welcome to enable this and check if it breaks anything.
16+
*)
17+
{$UNDEFINE SDL_VIDEO_DRIVER_DIRECTFB}
18+
1319
{$IFDEF DARWIN}
1420
{$DEFINE SDL_VIDEO_DRIVER_COCOA}
1521
{$ENDIF}
1622

23+
(*
24+
* Disabled because it's a Mac-specific video driver and we have no means of testing it.
25+
* If you own a Mac, feel welcome to enable this and check if it actually compiles and doesn't break anything.
26+
*)
27+
{$UNDEFINE SDL_VIDEO_DRIVER_UIKIT}
28+
29+
(*
30+
* Disabled because FPC does not ship a Wayland unit.
31+
* If you have some working Wayland bindings, feel welcome to enable this,
32+
* check if it actually compiles and doesn't break anything.
33+
*)
34+
{$UNDEFINE SDL_VIDEO_DRIVER_WAYLAND}
35+
36+
(*
37+
* Disabled because FPC does not ship a Mir unit.
38+
* Also, support for Mir has been removed in SDL 2.0.10.
39+
*)
40+
{$UNDEFINE SDL_VIDEO_DRIVER_MIR}
41+
42+
(*
43+
* Disabled because FPC does not support WinRT.
44+
*)
45+
{$UNDEFINE SDL_VIDEO_DRIVER_WINRT}
46+
1747
{$IFDEF ANDROID}
1848
{$DEFINE SDL_VIDEO_DRIVER_ANDROID}
1949
{$ENDIF}
2050

21-
{$IFDEF VIVANTE}
22-
{$DEFINE SDL_VIDEO_DRIVER_VIVANTE}
51+
(*
52+
* Disabled because this is an embedded platform and we have no means of testing this.
53+
* If you're actually working with Vivante, feel welcome to enable this
54+
* and check if it compiles and works properly.
55+
*)
56+
{$UNDEFINE SDL_VIDEO_DRIVER_VIVANTE}
57+
58+
{$IFDEF OS2}
59+
{$DEFINE SDL_VIDEO_DRIVER_OS2}
60+
{$ENDIF}
61+
62+
{$IFDEF HAIKU}
63+
{$DEFINE SDL_VIDEO_DRIVER_HAIKU}
2364
{$ENDIF}
2465

2566

@@ -34,143 +75,159 @@ Type
3475
SDL_SYSWM_DIRECTFB,
3576
SDL_SYSWM_COCOA,
3677
SDL_SYSWM_UIKIT,
37-
SDL_SYSWM_WAYLAND, // Since SDL 2.0.2
78+
SDL_SYSWM_WAYLAND, // Since SDL 2.0.2 - REMOVED in SDL 2.0.10!
3879
SDL_SYSWM_MIR, // Since SDL 2.0.2
3980
SDL_SYSWM_WINRT, // Since SDL 2.0.3
4081
SDL_SYSWM_ANDROID, // Since SDL 2.0.4
41-
SDL_SYSWM_VIVANTE // Since SDL 2.0.5
82+
SDL_SYSWM_VIVANTE, // Since SDL 2.0.5
83+
SDL_SYSWM_OS2, // Since SDL 2.0.6
84+
SDL_SYSWM_HAIKU // Since SDL 2.0.12
4285
);
4386

44-
/// sdl_syswm.h uses anonymous structs, declared right in SDL_SysWMmsg.
45-
/// Since Pascal does not allow this, we workaround by introducing named types
46-
/// before the proper TSDL_SysWMmsg definition.
87+
/// sdl_syswm.h uses anonymous structs, declared right in SDL_SysWMmsg and SDL_SysWMinfo.
88+
/// Since Pascal does not allow this, we workaround by introducing named types.
4789
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
4890
__SYSWM_WINDOWS = record
4991
hwnd: HWND; {**< The window for the message }
50-
msg: uInt; {**< The type of message *}
92+
msg: uInt; {**< The type of message *}
5193
wParam: WPARAM; {**< WORD message parameter *}
5294
lParam: LPARAM; {**< WORD message parameter *}
5395
end;
54-
{$ENDIF}
55-
{$IFDEF SDL_VIDEO_DRIVER_X11}
56-
__SYSWM_X11 = record
57-
event: {$IFDEF FPC} TXEvent {$ELSE} XEvent {$ENDIF};
58-
end;
59-
{$ENDIF}
60-
{$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
61-
__SYSWM_DIRECTFB = record
62-
event: DFBEvent;
63-
end;
64-
{$ENDIF}
65-
{$IFDEF SDL_VIDEO_DRIVER_COCOA}
66-
__SYSWM_COCOA = record
67-
(* No Cocoa window events yet *)
68-
dummy: integer;
69-
end;
70-
{$ENDIF}
71-
{$IFDEF SDL_VIDEO_DRIVER_UIKIT}
72-
__SYSWM_UIKIT = record
73-
(* No UIKit window events yet *)
74-
dummy: integer;
75-
end;
76-
{$ENDIF}
77-
{$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
78-
__SYSWM_VIVANTE = record
79-
(* No Vivante window events yet *)
80-
dummy: integer;
81-
end;
82-
{$ENDIF}
83-
84-
{**
85-
* The custom event structure.
86-
*}
87-
PSDL_SysWMmsg = ^TSDL_SysWMmsg;
88-
TSDL_SysWMmsg = record
89-
version: TSDL_version;
90-
subsystem: TSDL_SYSWM_TYPE;
91-
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
92-
win: __SYSWM_WINDOWS;
93-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_X11}
94-
x11: __SYSWM_X11;
95-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
96-
dfb: __SYSWM_DIRECTFB;
97-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_COCOA}
98-
cocoa: __SYSWM_COCOA;
99-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_UIKIT}
100-
uikit: __SYSWM_UIKIT;
101-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
102-
vivante: __SYSWM_VIVANTE;
103-
{$ELSE}
104-
(* Cannot have empty record case *)
105-
dummy: integer;
106-
{$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF}
107-
end;
108-
109-
/// Once again, sdl_syswm.h uses anonymous structs, declared right in SDL_SysWMinfo.
110-
/// We workaround by introducing named types before the proper TSDL_SysWMinfo definition.
111-
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
11296
__WMINFO_WINDOWS = record
11397
window: HWND; {**< The window handle *}
11498
hdc: HDC; {**< The window device context *}
11599
end;
116100
{$ENDIF}
117-
{$IFDEF SDL_VIDEO_DRIVER_WINRT} // Since SDL 2.0.3
118-
__WMINFO_WINRT = record
119-
window: IInspectable; {**< The WinRT CoreWindow *}
120-
end;
121-
{$ENDIF}
101+
122102
{$IFDEF SDL_VIDEO_DRIVER_X11}
103+
__SYSWM_X11 = record
104+
event: {$IFDEF FPC} TXEvent {$ELSE} XEvent {$ENDIF};
105+
end;
123106
__WMINFO_X11 = record
124107
display: PDisplay; {**< The X11 display *}
125108
window: TWindow; {**< The X11 window *}
126109
end;
127110
{$ENDIF}
111+
128112
{$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
129-
__WMINFO_DFB = record
113+
__SYSWM_DIRECTFB = record
114+
event: DFBEvent;
115+
end;
116+
__WMINFO_DIRECTFB = record
130117
dfb: IDirectFB; {**< The directfb main interface *}
131118
window: IDirectFBWindow; {**< The directfb window handle *}
132119
surface: IDirectFBSurface; {**< The directfb client surface *}
133120
end;
134121
{$ENDIF}
122+
135123
{$IFDEF SDL_VIDEO_DRIVER_COCOA}
124+
__SYSWM_COCOA = record
125+
(* No Cocoa window events yet *)
126+
dummy: integer;
127+
end;
136128
__WMINFO_COCOA = record
137-
window: NSWindow; {* The Cocoa window *}
129+
window: NSWindow; {* The Cocoa window *}
138130
end;
139131
{$ENDIF}
132+
140133
{$IFDEF SDL_VIDEO_DRIVER_UIKIT}
134+
__SYSWM_UIKIT = record
135+
(* No UIKit window events yet *)
136+
dummy: integer;
137+
end;
141138
__WMINFO_UIKIT = record
142139
window: UIWindow; {* The UIKit window *}
143140
framebuffer: GLuint; {* The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. *}
144141
colorbuffer: GLuint; {* The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. *}
145142
resolveFramebuffer: GLuint; {* The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. *}
146143
end;
147144
{$ENDIF}
148-
{$IFDEF SDL_VIDEO_DRIVER_WAYLAND} // Since SDL 2.0.2
145+
146+
{$IFDEF SDL_VIDEO_DRIVER_WAYLAND}
149147
__WMINFO_WAYLAND = record
150148
display: wl_display; {**< Wayland display *}
151149
surface: wl_surface; {**< Wayland surface *}
152150
shell_surface: wl_shell_surface; {**< Wayland shell_surface (window manager handle) *}
153151
end;
154152
{$ENDIF}
155-
{$IFDEF SDL_VIDEO_DRIVER_MIR} // Since SDL 2.0.2
153+
154+
{$IFDEF SDL_VIDEO_DRIVER_MIR}
156155
__WMINFO_MIR = record
157156
connection: PMirConnection; {**< Mir display server connection *}
158157
surface: PMirSurface; {**< Mir surface *}
159158
end;
160159
{$ENDIF}
160+
161+
{$IFDEF SDL_VIDEO_DRIVER_WINRT}
162+
__WMINFO_WINRT = record
163+
window: IInspectable; {**< The WinRT CoreWindow *}
164+
end;
165+
{$ENDIF}
166+
161167
{$IFDEF SDL_VIDEO_DRIVER_ANDROID}
162168
__WMINFO_ANDROID = record
163169
window: Pointer; // PANativeWindow;
164170
surface: Pointer; // PEGLSurface;
165171
end;
166172
{$ENDIF}
173+
167174
{$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
175+
__SYSWM_VIVANTE = record
176+
(* No Vivante window events yet *)
177+
dummy: integer;
178+
end;
168179
__WMINFO_VIVANTE = record
169180
display: EGLNativeDisplayType;
170181
window: EGLNativeWindowType;
171182
end;
172183
{$ENDIF}
173184

185+
{$IFDEF SDL_VIDEO_DRIVER_OS2}
186+
__SYSWM_OS2 = record
187+
fFrame: Boolean; {**< TRUE if hwnd is a frame window *}
188+
hwnd: HWND; {**< The window receiving the message *}
189+
msg: uInt; {**< The message identifier *}
190+
mp1: MPARAM; {**< The first first message parameter *}
191+
mp2: MPARAM; {**< The second first message parameter *}
192+
end;
193+
__WMINFO_OS2 = record
194+
hwnd: HWND; {**< The window handle *}
195+
hwndFrame: HWND; {**< The frame window handle *}
196+
end;
197+
{$ENDIF}
198+
199+
200+
{**
201+
* The custom event structure.
202+
*}
203+
PSDL_SysWMmsg = ^TSDL_SysWMmsg;
204+
TSDL_SysWMmsg = record
205+
version: TSDL_version;
206+
case subsystem: TSDL_SYSWM_TYPE of
207+
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
208+
SDL_SYSWM_WINDOWS: (win: __SYSWM_WINDOWS);
209+
{$ENDIF}
210+
{$IFDEF SDL_VIDEO_DRIVER_X11}
211+
SDL_SYSWM_X11: (x11: __SYSWM_X11);
212+
{$ENDIF}
213+
{$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
214+
SDL_SYSWM_DIRECTFB: (dfb: __SYSWM_DIRECTFB);
215+
{$ENDIF}
216+
{$IFDEF SDL_VIDEO_DRIVER_COCOA}
217+
SDL_SYSWM_COCOA: (cocoa: __SYSWM_COCOA);
218+
{$ENDIF}
219+
{$IFDEF SDL_VIDEO_DRIVER_UIKIT}
220+
SDL_SYSWM_UIKIT: (uikit: __SYSWM_UIKIT);
221+
{$ENDIF}
222+
{$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
223+
SDL_SYSWM_VIVANTE: (vivante: __SYSWM_VIVANTE);
224+
{$ENDIF}
225+
{$IFDEF SDL_VIDEO_DRIVER_OS2}
226+
SDL_SYSWM_OS2: (os2: __SYSWM_OS2);
227+
{$ENDIF}
228+
SDL_SYSWM_UNKNOWN: (dummy: integer);
229+
end;
230+
174231
{**
175232
* The custom window manager information structure.
176233
*
@@ -180,31 +237,42 @@ Type
180237
PSDL_SysWMinfo = ^TSDL_SysWMinfo;
181238
TSDL_SysWMinfo = record
182239
version: TSDL_version;
183-
subsystem: TSDL_SYSWM_TYPE;
184-
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
185-
win : __WMINFO_WINDOWS;
186-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_WINRT}
187-
winrt : __WMINFO_WINRT;
188-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_X11}
189-
x11 : __WMINFO_X11;
190-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
191-
dfb : __WMINFO_DFB;
192-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_COCOA}
193-
cocoa : __WMINFO_COCOA;
194-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_UIKIT}
195-
uikit : __WMINFO_UIKIT;
196-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_WAYLAND}
197-
wl : __WMINFO_WAYLAND;
198-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_MIR}
199-
mir : __WMINFO_MIR;
200-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_ANDROID}
201-
android: __WMINFO_ANDROID;
202-
{$ELSE} {$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
203-
vivante: __WMINFO_VIVANTE;
204-
{$ELSE}
205-
(* Cannot have empty record case *)
206-
dummy: integer;
207-
{$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF} {$ENDIF}
240+
case subsystem: TSDL_SYSWM_TYPE of
241+
{$IFDEF SDL_VIDEO_DRIVER_WINDOWS}
242+
SDL_SYSWM_WINDOWS: (win : __WMINFO_WINDOWS);
243+
{$ENDIF}
244+
{$IFDEF SDL_VIDEO_DRIVER_WINRT}
245+
SDL_SYSWM_WINRT: (winrt : __WMINFO_WINRT);
246+
{$ENDIF}
247+
{$IFDEF SDL_VIDEO_DRIVER_X11}
248+
SDL_SYSWM_X11: (x11 : __WMINFO_X11);
249+
{$ENDIF}
250+
{$IFDEF SDL_VIDEO_DRIVER_DIRECTFB}
251+
SDL_SYSWM_DIRECTFB: (dfb : __WMINFO_DIRECTFB);
252+
{$ENDIF}
253+
{$IFDEF SDL_VIDEO_DRIVER_COCOA}
254+
SDL_SYSWM_COCOA: (cocoa : __WMINFO_COCOA);
255+
{$ENDIF}
256+
{$IFDEF SDL_VIDEO_DRIVER_UIKIT}
257+
SDL_SYSWM_UIKIT: (uikit : __WMINFO_UIKIT);
258+
{$ENDIF}
259+
{$IFDEF SDL_VIDEO_DRIVER_WAYLAND}
260+
SDL_SYSWM_WAYLAND: (wl : __WMINFO_WAYLAND);
261+
{$ENDIF}
262+
{$IFDEF SDL_VIDEO_DRIVER_MIR}
263+
SDL_SYSWM_MIR: (mir : __WMINFO_MIR);
264+
{$ENDIF}
265+
{$IFDEF SDL_VIDEO_DRIVER_ANDROID}
266+
SDL_SYSWM_ANDROID: (android: __WMINFO_ANDROID);
267+
{$ENDIF}
268+
{$IFDEF SDL_VIDEO_DRIVER_VIVANTE}
269+
SDL_SYSWM_VIVANTE: (vivante: __WMINFO_VIVANTE);
270+
{$ENDIF}
271+
{$IFDEF SDL_VIDEO_DRIVER_OS2}
272+
SDL_SYSWM_OS2: (os2: __WMINFO_OS2);
273+
{$ENDIF}
274+
(* Ensure this union is always 64 bytes (8 64-bit pointers) *)
275+
SDL_SYSWM_UNKNOWN: (dummy: array[0..63] of Byte);
208276
end;
209277

210278
{* Function prototypes *}

0 commit comments

Comments
 (0)