native_audio 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/assets/include/GL/glew.h +26427 -0
- data/assets/include/GLES2/gl2.h +656 -0
- data/assets/include/GLES2/gl2ext.h +3949 -0
- data/assets/include/GLES2/gl2ext_angle.h +701 -0
- data/assets/include/GLES2/gl2platform.h +27 -0
- data/assets/include/GLES3/gl3.h +1192 -0
- data/assets/include/GLES3/gl31.h +1507 -0
- data/assets/include/GLES3/gl32.h +1808 -0
- data/assets/include/GLES3/gl3platform.h +27 -0
- data/assets/include/KHR/khrplatform.h +290 -0
- data/assets/include/SDL2/SDL.h +233 -0
- data/assets/include/SDL2/SDL_assert.h +326 -0
- data/assets/include/SDL2/SDL_atomic.h +415 -0
- data/assets/include/SDL2/SDL_audio.h +1500 -0
- data/assets/include/SDL2/SDL_bits.h +126 -0
- data/assets/include/SDL2/SDL_blendmode.h +198 -0
- data/assets/include/SDL2/SDL_clipboard.h +141 -0
- data/assets/include/SDL2/SDL_config.h +61 -0
- data/assets/include/SDL2/SDL_config_android.h +194 -0
- data/assets/include/SDL2/SDL_config_emscripten.h +218 -0
- data/assets/include/SDL2/SDL_config_iphoneos.h +217 -0
- data/assets/include/SDL2/SDL_config_macosx.h +277 -0
- data/assets/include/SDL2/SDL_config_minimal.h +95 -0
- data/assets/include/SDL2/SDL_config_ngage.h +89 -0
- data/assets/include/SDL2/SDL_config_os2.h +207 -0
- data/assets/include/SDL2/SDL_config_pandora.h +141 -0
- data/assets/include/SDL2/SDL_config_windows.h +331 -0
- data/assets/include/SDL2/SDL_config_wingdk.h +253 -0
- data/assets/include/SDL2/SDL_config_winrt.h +220 -0
- data/assets/include/SDL2/SDL_config_xbox.h +235 -0
- data/assets/include/SDL2/SDL_copying.h +20 -0
- data/assets/include/SDL2/SDL_cpuinfo.h +594 -0
- data/assets/include/SDL2/SDL_egl.h +2352 -0
- data/assets/include/SDL2/SDL_endian.h +348 -0
- data/assets/include/SDL2/SDL_error.h +163 -0
- data/assets/include/SDL2/SDL_events.h +1166 -0
- data/assets/include/SDL2/SDL_filesystem.h +149 -0
- data/assets/include/SDL2/SDL_gamecontroller.h +1074 -0
- data/assets/include/SDL2/SDL_gesture.h +117 -0
- data/assets/include/SDL2/SDL_guid.h +100 -0
- data/assets/include/SDL2/SDL_haptic.h +1341 -0
- data/assets/include/SDL2/SDL_hidapi.h +451 -0
- data/assets/include/SDL2/SDL_hints.h +2569 -0
- data/assets/include/SDL2/SDL_image.h +2173 -0
- data/assets/include/SDL2/SDL_joystick.h +1066 -0
- data/assets/include/SDL2/SDL_keyboard.h +353 -0
- data/assets/include/SDL2/SDL_keycode.h +358 -0
- data/assets/include/SDL2/SDL_loadso.h +115 -0
- data/assets/include/SDL2/SDL_locale.h +103 -0
- data/assets/include/SDL2/SDL_log.h +404 -0
- data/assets/include/SDL2/SDL_main.h +275 -0
- data/assets/include/SDL2/SDL_messagebox.h +193 -0
- data/assets/include/SDL2/SDL_metal.h +113 -0
- data/assets/include/SDL2/SDL_misc.h +79 -0
- data/assets/include/SDL2/SDL_mixer.h +2784 -0
- data/assets/include/SDL2/SDL_mouse.h +465 -0
- data/assets/include/SDL2/SDL_mutex.h +471 -0
- data/assets/include/SDL2/SDL_name.h +33 -0
- data/assets/include/SDL2/SDL_opengl.h +2132 -0
- data/assets/include/SDL2/SDL_opengl_glext.h +13209 -0
- data/assets/include/SDL2/SDL_opengles.h +39 -0
- data/assets/include/SDL2/SDL_opengles2.h +52 -0
- data/assets/include/SDL2/SDL_opengles2_gl2.h +656 -0
- data/assets/include/SDL2/SDL_opengles2_gl2ext.h +4033 -0
- data/assets/include/SDL2/SDL_opengles2_gl2platform.h +27 -0
- data/assets/include/SDL2/SDL_opengles2_khrplatform.h +311 -0
- data/assets/include/SDL2/SDL_pixels.h +644 -0
- data/assets/include/SDL2/SDL_platform.h +261 -0
- data/assets/include/SDL2/SDL_power.h +88 -0
- data/assets/include/SDL2/SDL_quit.h +58 -0
- data/assets/include/SDL2/SDL_rect.h +376 -0
- data/assets/include/SDL2/SDL_render.h +1919 -0
- data/assets/include/SDL2/SDL_revision.h +6 -0
- data/assets/include/SDL2/SDL_rwops.h +841 -0
- data/assets/include/SDL2/SDL_scancode.h +438 -0
- data/assets/include/SDL2/SDL_sensor.h +322 -0
- data/assets/include/SDL2/SDL_shape.h +155 -0
- data/assets/include/SDL2/SDL_stdinc.h +830 -0
- data/assets/include/SDL2/SDL_surface.h +997 -0
- data/assets/include/SDL2/SDL_system.h +623 -0
- data/assets/include/SDL2/SDL_syswm.h +386 -0
- data/assets/include/SDL2/SDL_test.h +69 -0
- data/assets/include/SDL2/SDL_test_assert.h +105 -0
- data/assets/include/SDL2/SDL_test_common.h +236 -0
- data/assets/include/SDL2/SDL_test_compare.h +69 -0
- data/assets/include/SDL2/SDL_test_crc32.h +124 -0
- data/assets/include/SDL2/SDL_test_font.h +168 -0
- data/assets/include/SDL2/SDL_test_fuzzer.h +386 -0
- data/assets/include/SDL2/SDL_test_harness.h +134 -0
- data/assets/include/SDL2/SDL_test_images.h +78 -0
- data/assets/include/SDL2/SDL_test_log.h +67 -0
- data/assets/include/SDL2/SDL_test_md5.h +129 -0
- data/assets/include/SDL2/SDL_test_memory.h +63 -0
- data/assets/include/SDL2/SDL_test_random.h +115 -0
- data/assets/include/SDL2/SDL_thread.h +464 -0
- data/assets/include/SDL2/SDL_timer.h +222 -0
- data/assets/include/SDL2/SDL_touch.h +150 -0
- data/assets/include/SDL2/SDL_ttf.h +2316 -0
- data/assets/include/SDL2/SDL_types.h +29 -0
- data/assets/include/SDL2/SDL_version.h +204 -0
- data/assets/include/SDL2/SDL_video.h +2150 -0
- data/assets/include/SDL2/SDL_vulkan.h +215 -0
- data/assets/include/SDL2/begin_code.h +187 -0
- data/assets/include/SDL2/close_code.h +40 -0
- data/assets/macos/universal/lib/libFLAC.a +0 -0
- data/assets/macos/universal/lib/libSDL2.a +0 -0
- data/assets/macos/universal/lib/libSDL2_image.a +0 -0
- data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
- data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
- data/assets/macos/universal/lib/libmodplug.a +0 -0
- data/assets/macos/universal/lib/libmpg123.a +0 -0
- data/assets/macos/universal/lib/libogg.a +0 -0
- data/assets/macos/universal/lib/libvorbis.a +0 -0
- data/assets/macos/universal/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +1 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmodplug.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libogg.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libopusfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libssp.a +1 -0
- data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libvorbis.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
- data/ext/Makefile +270 -0
- data/ext/audio.c +80 -0
- data/ext/audio.o +0 -0
- data/ext/extconf.h +3 -0
- data/ext/extconf.rb +177 -0
- data/ext/mkmf.log +7 -0
- data/lib/audio.bundle +0 -0
- data/lib/native_audio.rb +50 -0
- metadata +198 -0
@@ -0,0 +1,623 @@
|
|
1
|
+
/*
|
2
|
+
Simple DirectMedia Layer
|
3
|
+
Copyright (C) 1997-2022 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_system.h
|
24
|
+
*
|
25
|
+
* Include file for platform specific SDL API functions
|
26
|
+
*/
|
27
|
+
|
28
|
+
#ifndef SDL_system_h_
|
29
|
+
#define SDL_system_h_
|
30
|
+
|
31
|
+
#include "SDL_stdinc.h"
|
32
|
+
#include "SDL_keyboard.h"
|
33
|
+
#include "SDL_render.h"
|
34
|
+
#include "SDL_video.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
|
+
/* Platform specific functions for Windows */
|
44
|
+
#if defined(__WIN32__) || defined(__GDK__)
|
45
|
+
|
46
|
+
typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam);
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Set a callback for every Windows message, run before TranslateMessage().
|
50
|
+
*
|
51
|
+
* \param callback The SDL_WindowsMessageHook function to call.
|
52
|
+
* \param userdata a pointer to pass to every iteration of `callback`
|
53
|
+
*
|
54
|
+
* \since This function is available since SDL 2.0.4.
|
55
|
+
*/
|
56
|
+
extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata);
|
57
|
+
|
58
|
+
#endif /* defined(__WIN32__) || defined(__GDK__) */
|
59
|
+
|
60
|
+
#if defined(__WIN32__) || defined(__WINGDK__)
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Get the D3D9 adapter index that matches the specified display index.
|
64
|
+
*
|
65
|
+
* The returned adapter index can be passed to `IDirect3D9::CreateDevice` and
|
66
|
+
* controls on which monitor a full screen application will appear.
|
67
|
+
*
|
68
|
+
* \param displayIndex the display index for which to get the D3D9 adapter
|
69
|
+
* index
|
70
|
+
* \returns the D3D9 adapter index on success or a negative error code on
|
71
|
+
* failure; call SDL_GetError() for more information.
|
72
|
+
*
|
73
|
+
* \since This function is available since SDL 2.0.1.
|
74
|
+
*/
|
75
|
+
extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
|
76
|
+
|
77
|
+
typedef struct IDirect3DDevice9 IDirect3DDevice9;
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Get the D3D9 device associated with a renderer.
|
81
|
+
*
|
82
|
+
* Once you are done using the device, you should release it to avoid a
|
83
|
+
* resource leak.
|
84
|
+
*
|
85
|
+
* \param renderer the renderer from which to get the associated D3D device
|
86
|
+
* \returns the D3D9 device associated with given renderer or NULL if it is
|
87
|
+
* not a D3D9 renderer; call SDL_GetError() for more information.
|
88
|
+
*
|
89
|
+
* \since This function is available since SDL 2.0.1.
|
90
|
+
*/
|
91
|
+
extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
|
92
|
+
|
93
|
+
typedef struct ID3D11Device ID3D11Device;
|
94
|
+
|
95
|
+
/**
|
96
|
+
* Get the D3D11 device associated with a renderer.
|
97
|
+
*
|
98
|
+
* Once you are done using the device, you should release it to avoid a
|
99
|
+
* resource leak.
|
100
|
+
*
|
101
|
+
* \param renderer the renderer from which to get the associated D3D11 device
|
102
|
+
* \returns the D3D11 device associated with given renderer or NULL if it is
|
103
|
+
* not a D3D11 renderer; call SDL_GetError() for more information.
|
104
|
+
*
|
105
|
+
* \since This function is available since SDL 2.0.16.
|
106
|
+
*/
|
107
|
+
extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer);
|
108
|
+
|
109
|
+
#endif /* defined(__WIN32__) || defined(__WINGDK__) */
|
110
|
+
|
111
|
+
#if defined(__WIN32__) || defined(__GDK__)
|
112
|
+
|
113
|
+
typedef struct ID3D12Device ID3D12Device;
|
114
|
+
|
115
|
+
/**
|
116
|
+
* Get the D3D12 device associated with a renderer.
|
117
|
+
*
|
118
|
+
* Once you are done using the device, you should release it to avoid a
|
119
|
+
* resource leak.
|
120
|
+
*
|
121
|
+
* \param renderer the renderer from which to get the associated D3D12 device
|
122
|
+
* \returns the D3D12 device associated with given renderer or NULL if it is
|
123
|
+
* not a D3D12 renderer; call SDL_GetError() for more information.
|
124
|
+
*
|
125
|
+
* \since This function is available since SDL 2.24.0.
|
126
|
+
*/
|
127
|
+
extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer);
|
128
|
+
|
129
|
+
#endif /* defined(__WIN32__) || defined(__GDK__) */
|
130
|
+
|
131
|
+
#if defined(__WIN32__) || defined(__WINGDK__)
|
132
|
+
|
133
|
+
/**
|
134
|
+
* Get the DXGI Adapter and Output indices for the specified display index.
|
135
|
+
*
|
136
|
+
* The DXGI Adapter and Output indices can be passed to `EnumAdapters` and
|
137
|
+
* `EnumOutputs` respectively to get the objects required to create a DX10 or
|
138
|
+
* DX11 device and swap chain.
|
139
|
+
*
|
140
|
+
* Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it
|
141
|
+
* returns an SDL_bool.
|
142
|
+
*
|
143
|
+
* \param displayIndex the display index for which to get both indices
|
144
|
+
* \param adapterIndex a pointer to be filled in with the adapter index
|
145
|
+
* \param outputIndex a pointer to be filled in with the output index
|
146
|
+
* \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError()
|
147
|
+
* for more information.
|
148
|
+
*
|
149
|
+
* \since This function is available since SDL 2.0.2.
|
150
|
+
*/
|
151
|
+
extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );
|
152
|
+
|
153
|
+
#endif /* defined(__WIN32__) || defined(__WINGDK__) */
|
154
|
+
|
155
|
+
/* Platform specific functions for Linux */
|
156
|
+
#ifdef __LINUX__
|
157
|
+
|
158
|
+
/**
|
159
|
+
* Sets the UNIX nice value for a thread.
|
160
|
+
*
|
161
|
+
* This uses setpriority() if possible, and RealtimeKit if available.
|
162
|
+
*
|
163
|
+
* \param threadID the Unix thread ID to change priority of.
|
164
|
+
* \param priority The new, Unix-specific, priority value.
|
165
|
+
* \returns 0 on success, or -1 on error.
|
166
|
+
*
|
167
|
+
* \since This function is available since SDL 2.0.9.
|
168
|
+
*/
|
169
|
+
extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);
|
170
|
+
|
171
|
+
/**
|
172
|
+
* Sets the priority (not nice level) and scheduling policy for a thread.
|
173
|
+
*
|
174
|
+
* This uses setpriority() if possible, and RealtimeKit if available.
|
175
|
+
*
|
176
|
+
* \param threadID The Unix thread ID to change priority of.
|
177
|
+
* \param sdlPriority The new SDL_ThreadPriority value.
|
178
|
+
* \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR,
|
179
|
+
* SCHED_OTHER, etc...)
|
180
|
+
* \returns 0 on success, or -1 on error.
|
181
|
+
*
|
182
|
+
* \since This function is available since SDL 2.0.18.
|
183
|
+
*/
|
184
|
+
extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy);
|
185
|
+
|
186
|
+
#endif /* __LINUX__ */
|
187
|
+
|
188
|
+
/* Platform specific functions for iOS */
|
189
|
+
#ifdef __IPHONEOS__
|
190
|
+
|
191
|
+
#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
|
192
|
+
|
193
|
+
/**
|
194
|
+
* Use this function to set the animation callback on Apple iOS.
|
195
|
+
*
|
196
|
+
* The function prototype for `callback` is:
|
197
|
+
*
|
198
|
+
* ```c
|
199
|
+
* void callback(void* callbackParam);
|
200
|
+
* ```
|
201
|
+
*
|
202
|
+
* Where its parameter, `callbackParam`, is what was passed as `callbackParam`
|
203
|
+
* to SDL_iPhoneSetAnimationCallback().
|
204
|
+
*
|
205
|
+
* This function is only available on Apple iOS.
|
206
|
+
*
|
207
|
+
* For more information see:
|
208
|
+
* https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md
|
209
|
+
*
|
210
|
+
* This functions is also accessible using the macro
|
211
|
+
* SDL_iOSSetAnimationCallback() since SDL 2.0.4.
|
212
|
+
*
|
213
|
+
* \param window the window for which the animation callback should be set
|
214
|
+
* \param interval the number of frames after which **callback** will be
|
215
|
+
* called
|
216
|
+
* \param callback the function to call for every frame.
|
217
|
+
* \param callbackParam a pointer that is passed to `callback`.
|
218
|
+
* \returns 0 on success or a negative error code on failure; call
|
219
|
+
* SDL_GetError() for more information.
|
220
|
+
*
|
221
|
+
* \since This function is available since SDL 2.0.0.
|
222
|
+
*
|
223
|
+
* \sa SDL_iPhoneSetEventPump
|
224
|
+
*/
|
225
|
+
extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam);
|
226
|
+
|
227
|
+
#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
|
228
|
+
|
229
|
+
/**
|
230
|
+
* Use this function to enable or disable the SDL event pump on Apple iOS.
|
231
|
+
*
|
232
|
+
* This function is only available on Apple iOS.
|
233
|
+
*
|
234
|
+
* This functions is also accessible using the macro SDL_iOSSetEventPump()
|
235
|
+
* since SDL 2.0.4.
|
236
|
+
*
|
237
|
+
* \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it
|
238
|
+
*
|
239
|
+
* \since This function is available since SDL 2.0.0.
|
240
|
+
*
|
241
|
+
* \sa SDL_iPhoneSetAnimationCallback
|
242
|
+
*/
|
243
|
+
extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
|
244
|
+
|
245
|
+
#endif /* __IPHONEOS__ */
|
246
|
+
|
247
|
+
|
248
|
+
/* Platform specific functions for Android */
|
249
|
+
#ifdef __ANDROID__
|
250
|
+
|
251
|
+
/**
|
252
|
+
* Get the Android Java Native Interface Environment of the current thread.
|
253
|
+
*
|
254
|
+
* This is the JNIEnv one needs to access the Java virtual machine from native
|
255
|
+
* code, and is needed for many Android APIs to be usable from C.
|
256
|
+
*
|
257
|
+
* The prototype of the function in SDL's code actually declare a void* return
|
258
|
+
* type, even if the implementation returns a pointer to a JNIEnv. The
|
259
|
+
* rationale being that the SDL headers can avoid including jni.h.
|
260
|
+
*
|
261
|
+
* \returns a pointer to Java native interface object (JNIEnv) to which the
|
262
|
+
* current thread is attached, or 0 on error.
|
263
|
+
*
|
264
|
+
* \since This function is available since SDL 2.0.0.
|
265
|
+
*
|
266
|
+
* \sa SDL_AndroidGetActivity
|
267
|
+
*/
|
268
|
+
extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
|
269
|
+
|
270
|
+
/**
|
271
|
+
* Retrieve the Java instance of the Android activity class.
|
272
|
+
*
|
273
|
+
* The prototype of the function in SDL's code actually declares a void*
|
274
|
+
* return type, even if the implementation returns a jobject. The rationale
|
275
|
+
* being that the SDL headers can avoid including jni.h.
|
276
|
+
*
|
277
|
+
* The jobject returned by the function is a local reference and must be
|
278
|
+
* released by the caller. See the PushLocalFrame() and PopLocalFrame() or
|
279
|
+
* DeleteLocalRef() functions of the Java native interface:
|
280
|
+
*
|
281
|
+
* https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
|
282
|
+
*
|
283
|
+
* \returns the jobject representing the instance of the Activity class of the
|
284
|
+
* Android application, or NULL on error.
|
285
|
+
*
|
286
|
+
* \since This function is available since SDL 2.0.0.
|
287
|
+
*
|
288
|
+
* \sa SDL_AndroidGetJNIEnv
|
289
|
+
*/
|
290
|
+
extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
|
291
|
+
|
292
|
+
/**
|
293
|
+
* Query Android API level of the current device.
|
294
|
+
*
|
295
|
+
* - API level 31: Android 12
|
296
|
+
* - API level 30: Android 11
|
297
|
+
* - API level 29: Android 10
|
298
|
+
* - API level 28: Android 9
|
299
|
+
* - API level 27: Android 8.1
|
300
|
+
* - API level 26: Android 8.0
|
301
|
+
* - API level 25: Android 7.1
|
302
|
+
* - API level 24: Android 7.0
|
303
|
+
* - API level 23: Android 6.0
|
304
|
+
* - API level 22: Android 5.1
|
305
|
+
* - API level 21: Android 5.0
|
306
|
+
* - API level 20: Android 4.4W
|
307
|
+
* - API level 19: Android 4.4
|
308
|
+
* - API level 18: Android 4.3
|
309
|
+
* - API level 17: Android 4.2
|
310
|
+
* - API level 16: Android 4.1
|
311
|
+
* - API level 15: Android 4.0.3
|
312
|
+
* - API level 14: Android 4.0
|
313
|
+
* - API level 13: Android 3.2
|
314
|
+
* - API level 12: Android 3.1
|
315
|
+
* - API level 11: Android 3.0
|
316
|
+
* - API level 10: Android 2.3.3
|
317
|
+
*
|
318
|
+
* \returns the Android API level.
|
319
|
+
*
|
320
|
+
* \since This function is available since SDL 2.0.12.
|
321
|
+
*/
|
322
|
+
extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void);
|
323
|
+
|
324
|
+
/**
|
325
|
+
* Query if the application is running on Android TV.
|
326
|
+
*
|
327
|
+
* \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise.
|
328
|
+
*
|
329
|
+
* \since This function is available since SDL 2.0.8.
|
330
|
+
*/
|
331
|
+
extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
|
332
|
+
|
333
|
+
/**
|
334
|
+
* Query if the application is running on a Chromebook.
|
335
|
+
*
|
336
|
+
* \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise.
|
337
|
+
*
|
338
|
+
* \since This function is available since SDL 2.0.9.
|
339
|
+
*/
|
340
|
+
extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
|
341
|
+
|
342
|
+
/**
|
343
|
+
* Query if the application is running on a Samsung DeX docking station.
|
344
|
+
*
|
345
|
+
* \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise.
|
346
|
+
*
|
347
|
+
* \since This function is available since SDL 2.0.9.
|
348
|
+
*/
|
349
|
+
extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
|
350
|
+
|
351
|
+
/**
|
352
|
+
* Trigger the Android system back button behavior.
|
353
|
+
*
|
354
|
+
* \since This function is available since SDL 2.0.9.
|
355
|
+
*/
|
356
|
+
extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
|
357
|
+
|
358
|
+
/**
|
359
|
+
See the official Android developer guide for more information:
|
360
|
+
http://developer.android.com/guide/topics/data/data-storage.html
|
361
|
+
*/
|
362
|
+
#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01
|
363
|
+
#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02
|
364
|
+
|
365
|
+
/**
|
366
|
+
* Get the path used for internal storage for this application.
|
367
|
+
*
|
368
|
+
* This path is unique to your application and cannot be written to by other
|
369
|
+
* applications.
|
370
|
+
*
|
371
|
+
* Your internal storage path is typically:
|
372
|
+
* `/data/data/your.app.package/files`.
|
373
|
+
*
|
374
|
+
* \returns the path used for internal storage or NULL on failure; call
|
375
|
+
* SDL_GetError() for more information.
|
376
|
+
*
|
377
|
+
* \since This function is available since SDL 2.0.0.
|
378
|
+
*
|
379
|
+
* \sa SDL_AndroidGetExternalStorageState
|
380
|
+
*/
|
381
|
+
extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);
|
382
|
+
|
383
|
+
/**
|
384
|
+
* Get the current state of external storage.
|
385
|
+
*
|
386
|
+
* The current state of external storage, a bitmask of these values:
|
387
|
+
* `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`.
|
388
|
+
*
|
389
|
+
* If external storage is currently unavailable, this will return 0.
|
390
|
+
*
|
391
|
+
* \returns the current state of external storage on success or 0 on failure;
|
392
|
+
* call SDL_GetError() for more information.
|
393
|
+
*
|
394
|
+
* \since This function is available since SDL 2.0.0.
|
395
|
+
*
|
396
|
+
* \sa SDL_AndroidGetExternalStoragePath
|
397
|
+
*/
|
398
|
+
extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);
|
399
|
+
|
400
|
+
/**
|
401
|
+
* Get the path used for external storage for this application.
|
402
|
+
*
|
403
|
+
* This path is unique to your application, but is public and can be written
|
404
|
+
* to by other applications.
|
405
|
+
*
|
406
|
+
* Your external storage path is typically:
|
407
|
+
* `/storage/sdcard0/Android/data/your.app.package/files`.
|
408
|
+
*
|
409
|
+
* \returns the path used for external storage for this application on success
|
410
|
+
* or NULL on failure; call SDL_GetError() for more information.
|
411
|
+
*
|
412
|
+
* \since This function is available since SDL 2.0.0.
|
413
|
+
*
|
414
|
+
* \sa SDL_AndroidGetExternalStorageState
|
415
|
+
*/
|
416
|
+
extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
|
417
|
+
|
418
|
+
/**
|
419
|
+
* Request permissions at runtime.
|
420
|
+
*
|
421
|
+
* This blocks the calling thread until the permission is granted or denied.
|
422
|
+
*
|
423
|
+
* \param permission The permission to request.
|
424
|
+
* \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise.
|
425
|
+
*
|
426
|
+
* \since This function is available since SDL 2.0.14.
|
427
|
+
*/
|
428
|
+
extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission);
|
429
|
+
|
430
|
+
/**
|
431
|
+
* Shows an Android toast notification.
|
432
|
+
*
|
433
|
+
* Toasts are a sort of lightweight notification that are unique to Android.
|
434
|
+
*
|
435
|
+
* https://developer.android.com/guide/topics/ui/notifiers/toasts
|
436
|
+
*
|
437
|
+
* Shows toast in UI thread.
|
438
|
+
*
|
439
|
+
* For the `gravity` parameter, choose a value from here, or -1 if you don't
|
440
|
+
* have a preference:
|
441
|
+
*
|
442
|
+
* https://developer.android.com/reference/android/view/Gravity
|
443
|
+
*
|
444
|
+
* \param message text message to be shown
|
445
|
+
* \param duration 0=short, 1=long
|
446
|
+
* \param gravity where the notification should appear on the screen.
|
447
|
+
* \param xoffset set this parameter only when gravity >=0
|
448
|
+
* \param yoffset set this parameter only when gravity >=0
|
449
|
+
* \returns 0 if success, -1 if any error occurs.
|
450
|
+
*
|
451
|
+
* \since This function is available since SDL 2.0.16.
|
452
|
+
*/
|
453
|
+
extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset);
|
454
|
+
|
455
|
+
/**
|
456
|
+
* Send a user command to SDLActivity.
|
457
|
+
*
|
458
|
+
* Override "boolean onUnhandledMessage(Message msg)" to handle the message.
|
459
|
+
*
|
460
|
+
* \param command user command that must be greater or equal to 0x8000
|
461
|
+
* \param param user parameter
|
462
|
+
*
|
463
|
+
* \since This function is available since SDL 2.0.22.
|
464
|
+
*/
|
465
|
+
extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param);
|
466
|
+
|
467
|
+
#endif /* __ANDROID__ */
|
468
|
+
|
469
|
+
/* Platform specific functions for WinRT */
|
470
|
+
#ifdef __WINRT__
|
471
|
+
|
472
|
+
/**
|
473
|
+
* \brief WinRT / Windows Phone path types
|
474
|
+
*/
|
475
|
+
typedef enum
|
476
|
+
{
|
477
|
+
/** \brief The installed app's root directory.
|
478
|
+
Files here are likely to be read-only. */
|
479
|
+
SDL_WINRT_PATH_INSTALLED_LOCATION,
|
480
|
+
|
481
|
+
/** \brief The app's local data store. Files may be written here */
|
482
|
+
SDL_WINRT_PATH_LOCAL_FOLDER,
|
483
|
+
|
484
|
+
/** \brief The app's roaming data store. Unsupported on Windows Phone.
|
485
|
+
Files written here may be copied to other machines via a network
|
486
|
+
connection.
|
487
|
+
*/
|
488
|
+
SDL_WINRT_PATH_ROAMING_FOLDER,
|
489
|
+
|
490
|
+
/** \brief The app's temporary data store. Unsupported on Windows Phone.
|
491
|
+
Files written here may be deleted at any time. */
|
492
|
+
SDL_WINRT_PATH_TEMP_FOLDER
|
493
|
+
} SDL_WinRT_Path;
|
494
|
+
|
495
|
+
|
496
|
+
/**
|
497
|
+
* \brief WinRT Device Family
|
498
|
+
*/
|
499
|
+
typedef enum
|
500
|
+
{
|
501
|
+
/** \brief Unknown family */
|
502
|
+
SDL_WINRT_DEVICEFAMILY_UNKNOWN,
|
503
|
+
|
504
|
+
/** \brief Desktop family*/
|
505
|
+
SDL_WINRT_DEVICEFAMILY_DESKTOP,
|
506
|
+
|
507
|
+
/** \brief Mobile family (for example smartphone) */
|
508
|
+
SDL_WINRT_DEVICEFAMILY_MOBILE,
|
509
|
+
|
510
|
+
/** \brief XBox family */
|
511
|
+
SDL_WINRT_DEVICEFAMILY_XBOX,
|
512
|
+
} SDL_WinRT_DeviceFamily;
|
513
|
+
|
514
|
+
|
515
|
+
/**
|
516
|
+
* Retrieve a WinRT defined path on the local file system.
|
517
|
+
*
|
518
|
+
* Not all paths are available on all versions of Windows. This is especially
|
519
|
+
* true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
|
520
|
+
* for more information on which path types are supported where.
|
521
|
+
*
|
522
|
+
* Documentation on most app-specific path types on WinRT can be found on
|
523
|
+
* MSDN, at the URL:
|
524
|
+
*
|
525
|
+
* https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
|
526
|
+
*
|
527
|
+
* \param pathType the type of path to retrieve, one of SDL_WinRT_Path
|
528
|
+
* \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if
|
529
|
+
* the path is not available for any reason; call SDL_GetError() for
|
530
|
+
* more information.
|
531
|
+
*
|
532
|
+
* \since This function is available since SDL 2.0.3.
|
533
|
+
*
|
534
|
+
* \sa SDL_WinRTGetFSPathUTF8
|
535
|
+
*/
|
536
|
+
extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
|
537
|
+
|
538
|
+
/**
|
539
|
+
* Retrieve a WinRT defined path on the local file system.
|
540
|
+
*
|
541
|
+
* Not all paths are available on all versions of Windows. This is especially
|
542
|
+
* true on Windows Phone. Check the documentation for the given SDL_WinRT_Path
|
543
|
+
* for more information on which path types are supported where.
|
544
|
+
*
|
545
|
+
* Documentation on most app-specific path types on WinRT can be found on
|
546
|
+
* MSDN, at the URL:
|
547
|
+
*
|
548
|
+
* https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
|
549
|
+
*
|
550
|
+
* \param pathType the type of path to retrieve, one of SDL_WinRT_Path
|
551
|
+
* \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if
|
552
|
+
* the path is not available for any reason; call SDL_GetError() for
|
553
|
+
* more information.
|
554
|
+
*
|
555
|
+
* \since This function is available since SDL 2.0.3.
|
556
|
+
*
|
557
|
+
* \sa SDL_WinRTGetFSPathUNICODE
|
558
|
+
*/
|
559
|
+
extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
|
560
|
+
|
561
|
+
/**
|
562
|
+
* Detects the device family of WinRT platform at runtime.
|
563
|
+
*
|
564
|
+
* \returns a value from the SDL_WinRT_DeviceFamily enum.
|
565
|
+
*
|
566
|
+
* \since This function is available since SDL 2.0.8.
|
567
|
+
*/
|
568
|
+
extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
|
569
|
+
|
570
|
+
#endif /* __WINRT__ */
|
571
|
+
|
572
|
+
/**
|
573
|
+
* Query if the current device is a tablet.
|
574
|
+
*
|
575
|
+
* If SDL can't determine this, it will return SDL_FALSE.
|
576
|
+
*
|
577
|
+
* \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise.
|
578
|
+
*
|
579
|
+
* \since This function is available since SDL 2.0.9.
|
580
|
+
*/
|
581
|
+
extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);
|
582
|
+
|
583
|
+
/* Functions used by iOS application delegates to notify SDL about state changes */
|
584
|
+
extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void);
|
585
|
+
extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void);
|
586
|
+
extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void);
|
587
|
+
extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void);
|
588
|
+
extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void);
|
589
|
+
extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void);
|
590
|
+
#ifdef __IPHONEOS__
|
591
|
+
extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void);
|
592
|
+
#endif
|
593
|
+
|
594
|
+
/* Functions used only by GDK */
|
595
|
+
#if defined(__GDK__)
|
596
|
+
typedef struct XTaskQueueObject * XTaskQueueHandle;
|
597
|
+
|
598
|
+
/**
|
599
|
+
* Gets a reference to the global async task queue handle for GDK,
|
600
|
+
* initializing if needed.
|
601
|
+
*
|
602
|
+
* Once you are done with the task queue, you should call
|
603
|
+
* XTaskQueueCloseHandle to reduce the reference count to avoid a resource
|
604
|
+
* leak.
|
605
|
+
*
|
606
|
+
* \param outTaskQueue a pointer to be filled in with task queue handle.
|
607
|
+
* \returns 0 if success, -1 if any error occurs.
|
608
|
+
*
|
609
|
+
* \since This function is available since SDL 2.24.0.
|
610
|
+
*/
|
611
|
+
extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue);
|
612
|
+
|
613
|
+
#endif
|
614
|
+
|
615
|
+
/* Ends C function definitions when using C++ */
|
616
|
+
#ifdef __cplusplus
|
617
|
+
}
|
618
|
+
#endif
|
619
|
+
#include "close_code.h"
|
620
|
+
|
621
|
+
#endif /* SDL_system_h_ */
|
622
|
+
|
623
|
+
/* vi: set ts=4 sw=4 expandtab: */
|