rubygl 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile.lock +2 -0
  3. data/README.md +1 -1
  4. data/Rakefile +17 -9
  5. data/bin/ffi_code_gen.rb +11 -3
  6. data/ext/macosx/RubyGL.so +0 -0
  7. data/ext/macosx/SDL2.framework/Headers/SDL.h +163 -0
  8. data/ext/macosx/SDL2.framework/Headers/SDL_assert.h +284 -0
  9. data/ext/macosx/SDL2.framework/Headers/SDL_atomic.h +260 -0
  10. data/ext/macosx/SDL2.framework/Headers/SDL_audio.h +506 -0
  11. data/ext/macosx/SDL2.framework/Headers/SDL_bits.h +97 -0
  12. data/ext/macosx/SDL2.framework/Headers/SDL_blendmode.h +63 -0
  13. data/ext/macosx/SDL2.framework/Headers/SDL_clipboard.h +71 -0
  14. data/ext/macosx/SDL2.framework/Headers/SDL_config.h +55 -0
  15. data/ext/macosx/SDL2.framework/Headers/SDL_config_macosx.h +184 -0
  16. data/ext/macosx/SDL2.framework/Headers/SDL_copying.h +20 -0
  17. data/ext/macosx/SDL2.framework/Headers/SDL_cpuinfo.h +156 -0
  18. data/ext/macosx/SDL2.framework/Headers/SDL_endian.h +239 -0
  19. data/ext/macosx/SDL2.framework/Headers/SDL_error.h +76 -0
  20. data/ext/macosx/SDL2.framework/Headers/SDL_events.h +723 -0
  21. data/ext/macosx/SDL2.framework/Headers/SDL_filesystem.h +136 -0
  22. data/ext/macosx/SDL2.framework/Headers/SDL_gamecontroller.h +316 -0
  23. data/ext/macosx/SDL2.framework/Headers/SDL_gesture.h +87 -0
  24. data/ext/macosx/SDL2.framework/Headers/SDL_haptic.h +1225 -0
  25. data/ext/macosx/SDL2.framework/Headers/SDL_hints.h +517 -0
  26. data/ext/macosx/SDL2.framework/Headers/SDL_joystick.h +253 -0
  27. data/ext/macosx/SDL2.framework/Headers/SDL_keyboard.h +217 -0
  28. data/ext/macosx/SDL2.framework/Headers/SDL_keycode.h +341 -0
  29. data/ext/macosx/SDL2.framework/Headers/SDL_loadso.h +81 -0
  30. data/ext/macosx/SDL2.framework/Headers/SDL_log.h +211 -0
  31. data/ext/macosx/SDL2.framework/Headers/SDL_main.h +155 -0
  32. data/ext/macosx/SDL2.framework/Headers/SDL_messagebox.h +144 -0
  33. data/ext/macosx/SDL2.framework/Headers/SDL_mouse.h +224 -0
  34. data/ext/macosx/SDL2.framework/Headers/SDL_mutex.h +251 -0
  35. data/ext/macosx/SDL2.framework/Headers/SDL_name.h +33 -0
  36. data/ext/macosx/SDL2.framework/Headers/SDL_opengl.h +11126 -0
  37. data/ext/macosx/SDL2.framework/Headers/SDL_opengles.h +38 -0
  38. data/ext/macosx/SDL2.framework/Headers/SDL_opengles2.h +2790 -0
  39. data/ext/macosx/SDL2.framework/Headers/SDL_pixels.h +429 -0
  40. data/ext/macosx/SDL2.framework/Headers/SDL_platform.h +164 -0
  41. data/ext/macosx/SDL2.framework/Headers/SDL_power.h +75 -0
  42. data/ext/macosx/SDL2.framework/Headers/SDL_quit.h +58 -0
  43. data/ext/macosx/SDL2.framework/Headers/SDL_rect.h +138 -0
  44. data/ext/macosx/SDL2.framework/Headers/SDL_render.h +870 -0
  45. data/ext/macosx/SDL2.framework/Headers/SDL_revision.h +2 -0
  46. data/ext/macosx/SDL2.framework/Headers/SDL_rwops.h +232 -0
  47. data/ext/macosx/SDL2.framework/Headers/SDL_scancode.h +401 -0
  48. data/ext/macosx/SDL2.framework/Headers/SDL_shape.h +143 -0
  49. data/ext/macosx/SDL2.framework/Headers/SDL_stdinc.h +405 -0
  50. data/ext/macosx/SDL2.framework/Headers/SDL_surface.h +503 -0
  51. data/ext/macosx/SDL2.framework/Headers/SDL_system.h +191 -0
  52. data/ext/macosx/SDL2.framework/Headers/SDL_syswm.h +272 -0
  53. data/ext/macosx/SDL2.framework/Headers/SDL_thread.h +287 -0
  54. data/ext/macosx/SDL2.framework/Headers/SDL_timer.h +115 -0
  55. data/ext/macosx/SDL2.framework/Headers/SDL_touch.h +86 -0
  56. data/ext/macosx/SDL2.framework/Headers/SDL_types.h +29 -0
  57. data/ext/macosx/SDL2.framework/Headers/SDL_version.h +162 -0
  58. data/ext/macosx/SDL2.framework/Headers/SDL_video.h +979 -0
  59. data/ext/macosx/SDL2.framework/Headers/begin_code.h +140 -0
  60. data/ext/macosx/SDL2.framework/Headers/close_code.h +37 -0
  61. data/ext/macosx/SDL2.framework/Resources/Info.plist +42 -0
  62. data/ext/macosx/SDL2.framework/SDL2 +0 -0
  63. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL.h +163 -0
  64. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_assert.h +284 -0
  65. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_atomic.h +260 -0
  66. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_audio.h +506 -0
  67. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_bits.h +97 -0
  68. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_blendmode.h +63 -0
  69. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_clipboard.h +71 -0
  70. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_config.h +55 -0
  71. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h +184 -0
  72. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_copying.h +20 -0
  73. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h +156 -0
  74. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_endian.h +239 -0
  75. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_error.h +76 -0
  76. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_events.h +723 -0
  77. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_filesystem.h +136 -0
  78. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h +316 -0
  79. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_gesture.h +87 -0
  80. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_haptic.h +1225 -0
  81. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_hints.h +517 -0
  82. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_joystick.h +253 -0
  83. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_keyboard.h +217 -0
  84. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_keycode.h +341 -0
  85. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_loadso.h +81 -0
  86. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_log.h +211 -0
  87. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_main.h +155 -0
  88. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_messagebox.h +144 -0
  89. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_mouse.h +224 -0
  90. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_mutex.h +251 -0
  91. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_name.h +33 -0
  92. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_opengl.h +11126 -0
  93. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_opengles.h +38 -0
  94. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_opengles2.h +2790 -0
  95. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_pixels.h +429 -0
  96. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_platform.h +164 -0
  97. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_power.h +75 -0
  98. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_quit.h +58 -0
  99. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_rect.h +138 -0
  100. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_render.h +870 -0
  101. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_revision.h +2 -0
  102. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_rwops.h +232 -0
  103. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_scancode.h +401 -0
  104. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_shape.h +143 -0
  105. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_stdinc.h +405 -0
  106. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_surface.h +503 -0
  107. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_system.h +191 -0
  108. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_syswm.h +272 -0
  109. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_thread.h +287 -0
  110. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_timer.h +115 -0
  111. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_touch.h +86 -0
  112. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_types.h +29 -0
  113. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_version.h +162 -0
  114. data/ext/macosx/SDL2.framework/Versions/A/Headers/SDL_video.h +979 -0
  115. data/ext/macosx/SDL2.framework/Versions/A/Headers/begin_code.h +140 -0
  116. data/ext/macosx/SDL2.framework/Versions/A/Headers/close_code.h +37 -0
  117. data/ext/macosx/SDL2.framework/Versions/A/Resources/Info.plist +42 -0
  118. data/ext/macosx/SDL2.framework/Versions/A/SDL2 +0 -0
  119. data/ext/macosx/SDL2.framework/Versions/A/_CodeSignature/CodeResources +331 -0
  120. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL.h +163 -0
  121. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_assert.h +284 -0
  122. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_atomic.h +260 -0
  123. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_audio.h +506 -0
  124. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_bits.h +97 -0
  125. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_blendmode.h +63 -0
  126. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_clipboard.h +71 -0
  127. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_config.h +55 -0
  128. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_config_macosx.h +184 -0
  129. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_copying.h +20 -0
  130. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_cpuinfo.h +156 -0
  131. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_endian.h +239 -0
  132. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_error.h +76 -0
  133. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_events.h +723 -0
  134. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_filesystem.h +136 -0
  135. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_gamecontroller.h +316 -0
  136. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_gesture.h +87 -0
  137. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_haptic.h +1225 -0
  138. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_hints.h +517 -0
  139. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_joystick.h +253 -0
  140. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_keyboard.h +217 -0
  141. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_keycode.h +341 -0
  142. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_loadso.h +81 -0
  143. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_log.h +211 -0
  144. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_main.h +155 -0
  145. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_messagebox.h +144 -0
  146. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_mouse.h +224 -0
  147. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_mutex.h +251 -0
  148. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_name.h +33 -0
  149. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_opengl.h +11126 -0
  150. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_opengles.h +38 -0
  151. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_opengles2.h +2790 -0
  152. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_pixels.h +429 -0
  153. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_platform.h +164 -0
  154. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_power.h +75 -0
  155. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_quit.h +58 -0
  156. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_rect.h +138 -0
  157. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_render.h +870 -0
  158. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_revision.h +2 -0
  159. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_rwops.h +232 -0
  160. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_scancode.h +401 -0
  161. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_shape.h +143 -0
  162. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_stdinc.h +405 -0
  163. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_surface.h +503 -0
  164. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_system.h +191 -0
  165. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_syswm.h +272 -0
  166. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_thread.h +287 -0
  167. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_timer.h +115 -0
  168. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_touch.h +86 -0
  169. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_types.h +29 -0
  170. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_version.h +162 -0
  171. data/ext/macosx/SDL2.framework/Versions/Current/Headers/SDL_video.h +979 -0
  172. data/ext/macosx/SDL2.framework/Versions/Current/Headers/begin_code.h +140 -0
  173. data/ext/macosx/SDL2.framework/Versions/Current/Headers/close_code.h +37 -0
  174. data/ext/macosx/SDL2.framework/Versions/Current/Resources/Info.plist +42 -0
  175. data/ext/macosx/SDL2.framework/Versions/Current/SDL2 +0 -0
  176. data/ext/macosx/SDL2.framework/Versions/Current/_CodeSignature/CodeResources +331 -0
  177. data/ext/windows/RubyGL.so +0 -0
  178. data/lib/rubygl/native/opengl.rb +1052 -1044
  179. data/lib/rubygl/setup.rb +7 -4
  180. data/lib/rubygl.rb +12 -4
  181. data/rubygl.gemspec +3 -2
  182. metadata +174 -3
@@ -0,0 +1,272 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
4
+
5
+ This software is provided 'as-is', without any express or implied
6
+ warranty. In no event will the authors be held liable for any damages
7
+ arising from the use of this software.
8
+
9
+ Permission is granted to anyone to use this software for any purpose,
10
+ including commercial applications, and to alter it and redistribute it
11
+ freely, subject to the following restrictions:
12
+
13
+ 1. The origin of this software must not be misrepresented; you must not
14
+ claim that you wrote the original software. If you use this software
15
+ in a product, an acknowledgment in the product documentation would be
16
+ appreciated but is not required.
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+ 3. This notice may not be removed or altered from any source distribution.
20
+ */
21
+
22
+ /**
23
+ * \file SDL_syswm.h
24
+ *
25
+ * Include file for SDL custom system window manager hooks.
26
+ */
27
+
28
+ #ifndef _SDL_syswm_h
29
+ #define _SDL_syswm_h
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_error.h"
33
+ #include "SDL_video.h"
34
+ #include "SDL_version.h"
35
+
36
+ #include "begin_code.h"
37
+ /* Set up for C function definitions, even when using C++ */
38
+ #ifdef __cplusplus
39
+ extern "C" {
40
+ #endif
41
+
42
+ /**
43
+ * \file SDL_syswm.h
44
+ *
45
+ * Your application has access to a special type of event ::SDL_SYSWMEVENT,
46
+ * which contains window-manager specific information and arrives whenever
47
+ * an unhandled window event occurs. This event is ignored by default, but
48
+ * you can enable it with SDL_EventState().
49
+ */
50
+ #ifdef SDL_PROTOTYPES_ONLY
51
+ struct SDL_SysWMinfo;
52
+ #else
53
+
54
+ #if defined(SDL_VIDEO_DRIVER_WINDOWS)
55
+ #define WIN32_LEAN_AND_MEAN
56
+ #include <windows.h>
57
+ #endif
58
+
59
+ #if defined(SDL_VIDEO_DRIVER_WINRT)
60
+ #include <Inspectable.h>
61
+ #endif
62
+
63
+ /* This is the structure for custom window manager events */
64
+ #if defined(SDL_VIDEO_DRIVER_X11)
65
+ #if defined(__APPLE__) && defined(__MACH__)
66
+ /* conflicts with Quickdraw.h */
67
+ #define Cursor X11Cursor
68
+ #endif
69
+
70
+ #include <X11/Xlib.h>
71
+ #include <X11/Xatom.h>
72
+
73
+ #if defined(__APPLE__) && defined(__MACH__)
74
+ /* matches the re-define above */
75
+ #undef Cursor
76
+ #endif
77
+
78
+ #endif /* defined(SDL_VIDEO_DRIVER_X11) */
79
+
80
+ #if defined(SDL_VIDEO_DRIVER_DIRECTFB)
81
+ #include <directfb.h>
82
+ #endif
83
+
84
+ #if defined(SDL_VIDEO_DRIVER_COCOA)
85
+ #ifdef __OBJC__
86
+ #include <Cocoa/Cocoa.h>
87
+ #else
88
+ typedef struct _NSWindow NSWindow;
89
+ #endif
90
+ #endif
91
+
92
+ #if defined(SDL_VIDEO_DRIVER_UIKIT)
93
+ #ifdef __OBJC__
94
+ #include <UIKit/UIKit.h>
95
+ #else
96
+ typedef struct _UIWindow UIWindow;
97
+ typedef struct _UIViewController UIViewController;
98
+ #endif
99
+ #endif
100
+
101
+ #if defined(SDL_VIDEO_DRIVER_MIR)
102
+ #include <mir_toolkit/mir_client_library.h>
103
+ #endif
104
+
105
+
106
+ /**
107
+ * These are the various supported windowing subsystems
108
+ */
109
+ typedef enum
110
+ {
111
+ SDL_SYSWM_UNKNOWN,
112
+ SDL_SYSWM_WINDOWS,
113
+ SDL_SYSWM_X11,
114
+ SDL_SYSWM_DIRECTFB,
115
+ SDL_SYSWM_COCOA,
116
+ SDL_SYSWM_UIKIT,
117
+ SDL_SYSWM_WAYLAND,
118
+ SDL_SYSWM_MIR,
119
+ SDL_SYSWM_WINRT,
120
+ } SDL_SYSWM_TYPE;
121
+
122
+ /**
123
+ * The custom event structure.
124
+ */
125
+ struct SDL_SysWMmsg
126
+ {
127
+ SDL_version version;
128
+ SDL_SYSWM_TYPE subsystem;
129
+ union
130
+ {
131
+ #if defined(SDL_VIDEO_DRIVER_WINDOWS)
132
+ struct {
133
+ HWND hwnd; /**< The window for the message */
134
+ UINT msg; /**< The type of message */
135
+ WPARAM wParam; /**< WORD message parameter */
136
+ LPARAM lParam; /**< LONG message parameter */
137
+ } win;
138
+ #endif
139
+ #if defined(SDL_VIDEO_DRIVER_X11)
140
+ struct {
141
+ XEvent event;
142
+ } x11;
143
+ #endif
144
+ #if defined(SDL_VIDEO_DRIVER_DIRECTFB)
145
+ struct {
146
+ DFBEvent event;
147
+ } dfb;
148
+ #endif
149
+ #if defined(SDL_VIDEO_DRIVER_COCOA)
150
+ struct
151
+ {
152
+ /* No Cocoa window events yet */
153
+ } cocoa;
154
+ #endif
155
+ #if defined(SDL_VIDEO_DRIVER_UIKIT)
156
+ struct
157
+ {
158
+ /* No UIKit window events yet */
159
+ } uikit;
160
+ #endif
161
+ /* Can't have an empty union */
162
+ int dummy;
163
+ } msg;
164
+ };
165
+
166
+ /**
167
+ * The custom window manager information structure.
168
+ *
169
+ * When this structure is returned, it holds information about which
170
+ * low level system it is using, and will be one of SDL_SYSWM_TYPE.
171
+ */
172
+ struct SDL_SysWMinfo
173
+ {
174
+ SDL_version version;
175
+ SDL_SYSWM_TYPE subsystem;
176
+ union
177
+ {
178
+ #if defined(SDL_VIDEO_DRIVER_WINDOWS)
179
+ struct
180
+ {
181
+ HWND window; /**< The window handle */
182
+ } win;
183
+ #endif
184
+ #if defined(SDL_VIDEO_DRIVER_WINRT)
185
+ struct
186
+ {
187
+ IInspectable * window; /**< The WinRT CoreWindow */
188
+ } winrt;
189
+ #endif
190
+ #if defined(SDL_VIDEO_DRIVER_X11)
191
+ struct
192
+ {
193
+ Display *display; /**< The X11 display */
194
+ Window window; /**< The X11 window */
195
+ } x11;
196
+ #endif
197
+ #if defined(SDL_VIDEO_DRIVER_DIRECTFB)
198
+ struct
199
+ {
200
+ IDirectFB *dfb; /**< The directfb main interface */
201
+ IDirectFBWindow *window; /**< The directfb window handle */
202
+ IDirectFBSurface *surface; /**< The directfb client surface */
203
+ } dfb;
204
+ #endif
205
+ #if defined(SDL_VIDEO_DRIVER_COCOA)
206
+ struct
207
+ {
208
+ NSWindow *window; /* The Cocoa window */
209
+ } cocoa;
210
+ #endif
211
+ #if defined(SDL_VIDEO_DRIVER_UIKIT)
212
+ struct
213
+ {
214
+ UIWindow *window; /* The UIKit window */
215
+ } uikit;
216
+ #endif
217
+ #if defined(SDL_VIDEO_DRIVER_WAYLAND)
218
+ struct
219
+ {
220
+ struct wl_display *display; /**< Wayland display */
221
+ struct wl_surface *surface; /**< Wayland surface */
222
+ struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */
223
+ } wl;
224
+ #endif
225
+ #if defined(SDL_VIDEO_DRIVER_MIR)
226
+ struct
227
+ {
228
+ MirConnection *connection; /**< Mir display server connection */
229
+ MirSurface *surface; /**< Mir surface */
230
+ } mir;
231
+ #endif
232
+
233
+ /* Can't have an empty union */
234
+ int dummy;
235
+ } info;
236
+ };
237
+
238
+ #endif /* SDL_PROTOTYPES_ONLY */
239
+
240
+ typedef struct SDL_SysWMinfo SDL_SysWMinfo;
241
+
242
+ /* Function prototypes */
243
+ /**
244
+ * \brief This function allows access to driver-dependent window information.
245
+ *
246
+ * \param window The window about which information is being requested
247
+ * \param info This structure must be initialized with the SDL version, and is
248
+ * then filled in with information about the given window.
249
+ *
250
+ * \return SDL_TRUE if the function is implemented and the version member of
251
+ * the \c info struct is valid, SDL_FALSE otherwise.
252
+ *
253
+ * You typically use this function like this:
254
+ * \code
255
+ * SDL_SysWMinfo info;
256
+ * SDL_VERSION(&info.version);
257
+ * if ( SDL_GetWindowWMInfo(window, &info) ) { ... }
258
+ * \endcode
259
+ */
260
+ extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window,
261
+ SDL_SysWMinfo * info);
262
+
263
+
264
+ /* Ends C function definitions when using C++ */
265
+ #ifdef __cplusplus
266
+ }
267
+ #endif
268
+ #include "close_code.h"
269
+
270
+ #endif /* _SDL_syswm_h */
271
+
272
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,287 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
4
+
5
+ This software is provided 'as-is', without any express or implied
6
+ warranty. In no event will the authors be held liable for any damages
7
+ arising from the use of this software.
8
+
9
+ Permission is granted to anyone to use this software for any purpose,
10
+ including commercial applications, and to alter it and redistribute it
11
+ freely, subject to the following restrictions:
12
+
13
+ 1. The origin of this software must not be misrepresented; you must not
14
+ claim that you wrote the original software. If you use this software
15
+ in a product, an acknowledgment in the product documentation would be
16
+ appreciated but is not required.
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+ 3. This notice may not be removed or altered from any source distribution.
20
+ */
21
+
22
+ #ifndef _SDL_thread_h
23
+ #define _SDL_thread_h
24
+
25
+ /**
26
+ * \file SDL_thread.h
27
+ *
28
+ * Header for the SDL thread management routines.
29
+ */
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_error.h"
33
+
34
+ /* Thread synchronization primitives */
35
+ #include "SDL_atomic.h"
36
+ #include "SDL_mutex.h"
37
+
38
+ #include "begin_code.h"
39
+ /* Set up for C function definitions, even when using C++ */
40
+ #ifdef __cplusplus
41
+ extern "C" {
42
+ #endif
43
+
44
+ /* The SDL thread structure, defined in SDL_thread.c */
45
+ struct SDL_Thread;
46
+ typedef struct SDL_Thread SDL_Thread;
47
+
48
+ /* The SDL thread ID */
49
+ typedef unsigned long SDL_threadID;
50
+
51
+ /* Thread local storage ID, 0 is the invalid ID */
52
+ typedef unsigned int SDL_TLSID;
53
+
54
+ /**
55
+ * The SDL thread priority.
56
+ *
57
+ * \note On many systems you require special privileges to set high priority.
58
+ */
59
+ typedef enum {
60
+ SDL_THREAD_PRIORITY_LOW,
61
+ SDL_THREAD_PRIORITY_NORMAL,
62
+ SDL_THREAD_PRIORITY_HIGH
63
+ } SDL_ThreadPriority;
64
+
65
+ /**
66
+ * The function passed to SDL_CreateThread().
67
+ * It is passed a void* user context parameter and returns an int.
68
+ */
69
+ typedef int (SDLCALL * SDL_ThreadFunction) (void *data);
70
+
71
+ #if defined(__WIN32__) && !defined(HAVE_LIBC)
72
+ /**
73
+ * \file SDL_thread.h
74
+ *
75
+ * We compile SDL into a DLL. This means, that it's the DLL which
76
+ * creates a new thread for the calling process with the SDL_CreateThread()
77
+ * API. There is a problem with this, that only the RTL of the SDL.DLL will
78
+ * be initialized for those threads, and not the RTL of the calling
79
+ * application!
80
+ *
81
+ * To solve this, we make a little hack here.
82
+ *
83
+ * We'll always use the caller's _beginthread() and _endthread() APIs to
84
+ * start a new thread. This way, if it's the SDL.DLL which uses this API,
85
+ * then the RTL of SDL.DLL will be used to create the new thread, and if it's
86
+ * the application, then the RTL of the application will be used.
87
+ *
88
+ * So, in short:
89
+ * Always use the _beginthread() and _endthread() of the calling runtime
90
+ * library!
91
+ */
92
+ #define SDL_PASSED_BEGINTHREAD_ENDTHREAD
93
+ #include <process.h> /* This has _beginthread() and _endthread() defined! */
94
+
95
+ typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread) (void *, unsigned,
96
+ unsigned (__stdcall *
97
+ func) (void
98
+ *),
99
+ void *arg, unsigned,
100
+ unsigned *threadID);
101
+ typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code);
102
+
103
+ /**
104
+ * Create a thread.
105
+ */
106
+ extern DECLSPEC SDL_Thread *SDLCALL
107
+ SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data,
108
+ pfnSDL_CurrentBeginThread pfnBeginThread,
109
+ pfnSDL_CurrentEndThread pfnEndThread);
110
+
111
+ /**
112
+ * Create a thread.
113
+ */
114
+ #if defined(SDL_CreateThread) && SDL_DYNAMIC_API
115
+ #undef SDL_CreateThread
116
+ #define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
117
+ #else
118
+ #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex)
119
+ #endif
120
+
121
+ #else
122
+
123
+ /**
124
+ * Create a thread.
125
+ *
126
+ * Thread naming is a little complicated: Most systems have very small
127
+ * limits for the string length (Haiku has 32 bytes, Linux currently has 16,
128
+ * Visual C++ 6.0 has nine!), and possibly other arbitrary rules. You'll
129
+ * have to see what happens with your system's debugger. The name should be
130
+ * UTF-8 (but using the naming limits of C identifiers is a better bet).
131
+ * There are no requirements for thread naming conventions, so long as the
132
+ * string is null-terminated UTF-8, but these guidelines are helpful in
133
+ * choosing a name:
134
+ *
135
+ * http://stackoverflow.com/questions/149932/naming-conventions-for-threads
136
+ *
137
+ * If a system imposes requirements, SDL will try to munge the string for
138
+ * it (truncate, etc), but the original string contents will be available
139
+ * from SDL_GetThreadName().
140
+ */
141
+ extern DECLSPEC SDL_Thread *SDLCALL
142
+ SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data);
143
+
144
+ #endif
145
+
146
+ /**
147
+ * Get the thread name, as it was specified in SDL_CreateThread().
148
+ * This function returns a pointer to a UTF-8 string that names the
149
+ * specified thread, or NULL if it doesn't have a name. This is internal
150
+ * memory, not to be free()'d by the caller, and remains valid until the
151
+ * specified thread is cleaned up by SDL_WaitThread().
152
+ */
153
+ extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread);
154
+
155
+ /**
156
+ * Get the thread identifier for the current thread.
157
+ */
158
+ extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void);
159
+
160
+ /**
161
+ * Get the thread identifier for the specified thread.
162
+ *
163
+ * Equivalent to SDL_ThreadID() if the specified thread is NULL.
164
+ */
165
+ extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread);
166
+
167
+ /**
168
+ * Set the priority for the current thread
169
+ */
170
+ extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority);
171
+
172
+ /**
173
+ * Wait for a thread to finish. Threads that haven't been detached will
174
+ * remain (as a "zombie") until this function cleans them up. Not doing so
175
+ * is a resource leak.
176
+ *
177
+ * Once a thread has been cleaned up through this function, the SDL_Thread
178
+ * that references it becomes invalid and should not be referenced again.
179
+ * As such, only one thread may call SDL_WaitThread() on another.
180
+ *
181
+ * The return code for the thread function is placed in the area
182
+ * pointed to by \c status, if \c status is not NULL.
183
+ *
184
+ * You may not wait on a thread that has been used in a call to
185
+ * SDL_DetachThread(). Use either that function or this one, but not
186
+ * both, or behavior is undefined.
187
+ *
188
+ * It is safe to pass NULL to this function; it is a no-op.
189
+ */
190
+ extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status);
191
+
192
+ /**
193
+ * A thread may be "detached" to signify that it should not remain until
194
+ * another thread has called SDL_WaitThread() on it. Detaching a thread
195
+ * is useful for long-running threads that nothing needs to synchronize
196
+ * with or further manage. When a detached thread is done, it simply
197
+ * goes away.
198
+ *
199
+ * There is no way to recover the return code of a detached thread. If you
200
+ * need this, don't detach the thread and instead use SDL_WaitThread().
201
+ *
202
+ * Once a thread is detached, you should usually assume the SDL_Thread isn't
203
+ * safe to reference again, as it will become invalid immediately upon
204
+ * the detached thread's exit, instead of remaining until someone has called
205
+ * SDL_WaitThread() to finally clean it up. As such, don't detach the same
206
+ * thread more than once.
207
+ *
208
+ * If a thread has already exited when passed to SDL_DetachThread(), it will
209
+ * stop waiting for a call to SDL_WaitThread() and clean up immediately.
210
+ * It is not safe to detach a thread that might be used with SDL_WaitThread().
211
+ *
212
+ * You may not call SDL_WaitThread() on a thread that has been detached.
213
+ * Use either that function or this one, but not both, or behavior is
214
+ * undefined.
215
+ *
216
+ * It is safe to pass NULL to this function; it is a no-op.
217
+ */
218
+ extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread);
219
+
220
+ /**
221
+ * \brief Create an identifier that is globally visible to all threads but refers to data that is thread-specific.
222
+ *
223
+ * \return The newly created thread local storage identifier, or 0 on error
224
+ *
225
+ * \code
226
+ * static SDL_SpinLock tls_lock;
227
+ * static SDL_TLSID thread_local_storage;
228
+ *
229
+ * void SetMyThreadData(void *value)
230
+ * {
231
+ * if (!thread_local_storage) {
232
+ * SDL_AtomicLock(&tls_lock);
233
+ * if (!thread_local_storage) {
234
+ * thread_local_storage = SDL_TLSCreate();
235
+ * }
236
+ * SDL_AtomicUnLock(&tls_lock);
237
+ * }
238
+ * SDL_TLSSet(thread_local_storage, value);
239
+ * }
240
+ *
241
+ * void *GetMyThreadData(void)
242
+ * {
243
+ * return SDL_TLSGet(thread_local_storage);
244
+ * }
245
+ * \endcode
246
+ *
247
+ * \sa SDL_TLSGet()
248
+ * \sa SDL_TLSSet()
249
+ */
250
+ extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void);
251
+
252
+ /**
253
+ * \brief Get the value associated with a thread local storage ID for the current thread.
254
+ *
255
+ * \param id The thread local storage ID
256
+ *
257
+ * \return The value associated with the ID for the current thread, or NULL if no value has been set.
258
+ *
259
+ * \sa SDL_TLSCreate()
260
+ * \sa SDL_TLSSet()
261
+ */
262
+ extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id);
263
+
264
+ /**
265
+ * \brief Set the value associated with a thread local storage ID for the current thread.
266
+ *
267
+ * \param id The thread local storage ID
268
+ * \param value The value to associate with the ID for the current thread
269
+ * \param destructor A function called when the thread exits, to free the value.
270
+ *
271
+ * \return 0 on success, -1 on error
272
+ *
273
+ * \sa SDL_TLSCreate()
274
+ * \sa SDL_TLSGet()
275
+ */
276
+ extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (*destructor)(void*));
277
+
278
+
279
+ /* Ends C function definitions when using C++ */
280
+ #ifdef __cplusplus
281
+ }
282
+ #endif
283
+ #include "close_code.h"
284
+
285
+ #endif /* _SDL_thread_h */
286
+
287
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,115 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
4
+
5
+ This software is provided 'as-is', without any express or implied
6
+ warranty. In no event will the authors be held liable for any damages
7
+ arising from the use of this software.
8
+
9
+ Permission is granted to anyone to use this software for any purpose,
10
+ including commercial applications, and to alter it and redistribute it
11
+ freely, subject to the following restrictions:
12
+
13
+ 1. The origin of this software must not be misrepresented; you must not
14
+ claim that you wrote the original software. If you use this software
15
+ in a product, an acknowledgment in the product documentation would be
16
+ appreciated but is not required.
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+ 3. This notice may not be removed or altered from any source distribution.
20
+ */
21
+
22
+ #ifndef _SDL_timer_h
23
+ #define _SDL_timer_h
24
+
25
+ /**
26
+ * \file SDL_timer.h
27
+ *
28
+ * Header for the SDL time management routines.
29
+ */
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_error.h"
33
+
34
+ #include "begin_code.h"
35
+ /* Set up for C function definitions, even when using C++ */
36
+ #ifdef __cplusplus
37
+ extern "C" {
38
+ #endif
39
+
40
+ /**
41
+ * \brief Get the number of milliseconds since the SDL library initialization.
42
+ *
43
+ * \note This value wraps if the program runs for more than ~49 days.
44
+ */
45
+ extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void);
46
+
47
+ /**
48
+ * \brief Compare SDL ticks values, and return true if A has passed B
49
+ *
50
+ * e.g. if you want to wait 100 ms, you could do this:
51
+ * Uint32 timeout = SDL_GetTicks() + 100;
52
+ * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
53
+ * ... do work until timeout has elapsed
54
+ * }
55
+ */
56
+ #define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0)
57
+
58
+ /**
59
+ * \brief Get the current value of the high resolution counter
60
+ */
61
+ extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void);
62
+
63
+ /**
64
+ * \brief Get the count per second of the high resolution counter
65
+ */
66
+ extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);
67
+
68
+ /**
69
+ * \brief Wait a specified number of milliseconds before returning.
70
+ */
71
+ extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);
72
+
73
+ /**
74
+ * Function prototype for the timer callback function.
75
+ *
76
+ * The callback function is passed the current timer interval and returns
77
+ * the next timer interval. If the returned value is the same as the one
78
+ * passed in, the periodic alarm continues, otherwise a new alarm is
79
+ * scheduled. If the callback returns 0, the periodic alarm is cancelled.
80
+ */
81
+ typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);
82
+
83
+ /**
84
+ * Definition of the timer ID type.
85
+ */
86
+ typedef int SDL_TimerID;
87
+
88
+ /**
89
+ * \brief Add a new timer to the pool of timers already running.
90
+ *
91
+ * \return A timer ID, or NULL when an error occurs.
92
+ */
93
+ extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
94
+ SDL_TimerCallback callback,
95
+ void *param);
96
+
97
+ /**
98
+ * \brief Remove a timer knowing its ID.
99
+ *
100
+ * \return A boolean value indicating success or failure.
101
+ *
102
+ * \warning It is not safe to remove a timer multiple times.
103
+ */
104
+ extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id);
105
+
106
+
107
+ /* Ends C function definitions when using C++ */
108
+ #ifdef __cplusplus
109
+ }
110
+ #endif
111
+ #include "close_code.h"
112
+
113
+ #endif /* _SDL_timer_h */
114
+
115
+ /* vi: set ts=4 sw=4 expandtab: */