diff options
Diffstat (limited to 'contrib/SDL-3.2.8/src/SDL_internal.h')
| -rw-r--r-- | contrib/SDL-3.2.8/src/SDL_internal.h | 283 |
1 files changed, 283 insertions, 0 deletions
diff --git a/contrib/SDL-3.2.8/src/SDL_internal.h b/contrib/SDL-3.2.8/src/SDL_internal.h new file mode 100644 index 0000000..a345252 --- /dev/null +++ b/contrib/SDL-3.2.8/src/SDL_internal.h | |||
| @@ -0,0 +1,283 @@ | |||
| 1 | /* | ||
| 2 | Simple DirectMedia Layer | ||
| 3 | Copyright (C) 1997-2025 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 | #ifndef SDL_internal_h_ | ||
| 22 | #define SDL_internal_h_ | ||
| 23 | |||
| 24 | // Many of SDL's features require _GNU_SOURCE on various platforms | ||
| 25 | #ifndef _GNU_SOURCE | ||
| 26 | #define _GNU_SOURCE | ||
| 27 | #endif | ||
| 28 | |||
| 29 | // Need this so Linux systems define fseek64o, ftell64o and off64_t | ||
| 30 | #ifndef _LARGEFILE64_SOURCE | ||
| 31 | #define _LARGEFILE64_SOURCE 1 | ||
| 32 | #endif | ||
| 33 | |||
| 34 | /* This is for a variable-length array at the end of a struct: | ||
| 35 | struct x { int y; char z[SDL_VARIABLE_LENGTH_ARRAY]; }; | ||
| 36 | Use this because GCC 2 needs different magic than other compilers. */ | ||
| 37 | #if (defined(__GNUC__) && (__GNUC__ <= 2)) || defined(__CC_ARM) || defined(__cplusplus) | ||
| 38 | #define SDL_VARIABLE_LENGTH_ARRAY 1 | ||
| 39 | #else | ||
| 40 | #define SDL_VARIABLE_LENGTH_ARRAY | ||
| 41 | #endif | ||
| 42 | |||
| 43 | #if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))) || defined(__clang__) | ||
| 44 | #define HAVE_GCC_DIAGNOSTIC_PRAGMA 1 | ||
| 45 | #endif | ||
| 46 | |||
| 47 | #ifdef _MSC_VER // We use constant comparison for generated code | ||
| 48 | #pragma warning(disable : 6326) | ||
| 49 | #endif | ||
| 50 | |||
| 51 | #ifdef _MSC_VER // SDL_MAX_SMALL_ALLOC_STACKSIZE is smaller than _ALLOCA_S_THRESHOLD and should be generally safe | ||
| 52 | #pragma warning(disable : 6255) | ||
| 53 | #endif | ||
| 54 | #define SDL_MAX_SMALL_ALLOC_STACKSIZE 128 | ||
| 55 | #define SDL_small_alloc(type, count, pisstack) ((*(pisstack) = ((sizeof(type) * (count)) < SDL_MAX_SMALL_ALLOC_STACKSIZE)), (*(pisstack) ? SDL_stack_alloc(type, count) : (type *)SDL_malloc(sizeof(type) * (count)))) | ||
| 56 | #define SDL_small_free(ptr, isstack) \ | ||
| 57 | if ((isstack)) { \ | ||
| 58 | SDL_stack_free(ptr); \ | ||
| 59 | } else { \ | ||
| 60 | SDL_free(ptr); \ | ||
| 61 | } | ||
| 62 | |||
| 63 | #include "SDL_build_config.h" | ||
| 64 | |||
| 65 | #include "dynapi/SDL_dynapi.h" | ||
| 66 | |||
| 67 | #if SDL_DYNAMIC_API | ||
| 68 | #include "dynapi/SDL_dynapi_overrides.h" | ||
| 69 | /* force SDL_DECLSPEC off...it's all internal symbols now. | ||
| 70 | These will have actual #defines during SDL_dynapi.c only */ | ||
| 71 | #ifdef SDL_DECLSPEC | ||
| 72 | #undef SDL_DECLSPEC | ||
| 73 | #endif | ||
| 74 | #define SDL_DECLSPEC | ||
| 75 | #endif | ||
| 76 | |||
| 77 | #ifdef SDL_PLATFORM_APPLE | ||
| 78 | #ifndef _DARWIN_C_SOURCE | ||
| 79 | #define _DARWIN_C_SOURCE 1 // for memset_pattern4() | ||
| 80 | #endif | ||
| 81 | #include <Availability.h> | ||
| 82 | |||
| 83 | #ifndef __IPHONE_OS_VERSION_MAX_ALLOWED | ||
| 84 | #define __IPHONE_OS_VERSION_MAX_ALLOWED 0 | ||
| 85 | #endif | ||
| 86 | #ifndef __APPLETV_OS_VERSION_MAX_ALLOWED | ||
| 87 | #define __APPLETV_OS_VERSION_MAX_ALLOWED 0 | ||
| 88 | #endif | ||
| 89 | #ifndef __MAC_OS_X_VERSION_MAX_ALLOWED | ||
| 90 | #define __MAC_OS_X_VERSION_MAX_ALLOWED 0 | ||
| 91 | #endif | ||
| 92 | #endif // SDL_PLATFORM_APPLE | ||
| 93 | |||
| 94 | #ifdef HAVE_SYS_TYPES_H | ||
| 95 | #include <sys/types.h> | ||
| 96 | #endif | ||
| 97 | #ifdef HAVE_STDIO_H | ||
| 98 | #include <stdio.h> | ||
| 99 | #endif | ||
| 100 | #ifdef HAVE_STDLIB_H | ||
| 101 | #include <stdlib.h> | ||
| 102 | #elif defined(HAVE_MALLOC_H) | ||
| 103 | #include <malloc.h> | ||
| 104 | #endif | ||
| 105 | #ifdef HAVE_STDDEF_H | ||
| 106 | #include <stddef.h> | ||
| 107 | #endif | ||
| 108 | #ifdef HAVE_STDARG_H | ||
| 109 | #include <stdarg.h> | ||
| 110 | #endif | ||
| 111 | #ifdef HAVE_STRING_H | ||
| 112 | #ifdef HAVE_MEMORY_H | ||
| 113 | #include <memory.h> | ||
| 114 | #endif | ||
| 115 | #include <string.h> | ||
| 116 | #endif | ||
| 117 | #ifdef HAVE_STRINGS_H | ||
| 118 | #include <strings.h> | ||
| 119 | #endif | ||
| 120 | #ifdef HAVE_WCHAR_H | ||
| 121 | #include <wchar.h> | ||
| 122 | #endif | ||
| 123 | #ifdef HAVE_INTTYPES_H | ||
| 124 | #include <inttypes.h> | ||
| 125 | #elif defined(HAVE_STDINT_H) | ||
| 126 | #include <stdint.h> | ||
| 127 | #endif | ||
| 128 | #ifdef HAVE_MATH_H | ||
| 129 | #include <math.h> | ||
| 130 | #endif | ||
| 131 | #ifdef HAVE_FLOAT_H | ||
| 132 | #include <float.h> | ||
| 133 | #endif | ||
| 134 | |||
| 135 | // If you run into a warning that O_CLOEXEC is redefined, update the SDL configuration header for your platform to add HAVE_O_CLOEXEC | ||
| 136 | #ifndef HAVE_O_CLOEXEC | ||
| 137 | #define O_CLOEXEC 0 | ||
| 138 | #endif | ||
| 139 | |||
| 140 | /* A few #defines to reduce SDL footprint. | ||
| 141 | Only effective when library is statically linked. */ | ||
| 142 | |||
| 143 | /* Optimized functions from 'SDL_blit_0.c' | ||
| 144 | - blit with source bits_per_pixel < 8, palette */ | ||
| 145 | #if !defined(SDL_HAVE_BLIT_0) && !defined(SDL_LEAN_AND_MEAN) | ||
| 146 | #define SDL_HAVE_BLIT_0 1 | ||
| 147 | #endif | ||
| 148 | |||
| 149 | /* Optimized functions from 'SDL_blit_1.c' | ||
| 150 | - blit with source bytes_per_pixel == 1, palette */ | ||
| 151 | #if !defined(SDL_HAVE_BLIT_1) && !defined(SDL_LEAN_AND_MEAN) | ||
| 152 | #define SDL_HAVE_BLIT_1 1 | ||
| 153 | #endif | ||
| 154 | |||
| 155 | /* Optimized functions from 'SDL_blit_A.c' | ||
| 156 | - blit with 'SDL_BLENDMODE_BLEND' blending mode */ | ||
| 157 | #if !defined(SDL_HAVE_BLIT_A) && !defined(SDL_LEAN_AND_MEAN) | ||
| 158 | #define SDL_HAVE_BLIT_A 1 | ||
| 159 | #endif | ||
| 160 | |||
| 161 | /* Optimized functions from 'SDL_blit_N.c' | ||
| 162 | - blit with COLORKEY mode, or nothing */ | ||
| 163 | #if !defined(SDL_HAVE_BLIT_N) && !defined(SDL_LEAN_AND_MEAN) | ||
| 164 | #define SDL_HAVE_BLIT_N 1 | ||
| 165 | #endif | ||
| 166 | |||
| 167 | /* Optimized functions from 'SDL_blit_N.c' | ||
| 168 | - RGB565 conversion with Lookup tables */ | ||
| 169 | #if !defined(SDL_HAVE_BLIT_N_RGB565) && !defined(SDL_LEAN_AND_MEAN) | ||
| 170 | #define SDL_HAVE_BLIT_N_RGB565 1 | ||
| 171 | #endif | ||
| 172 | |||
| 173 | /* Optimized functions from 'SDL_blit_AUTO.c' | ||
| 174 | - blit with modulate color, modulate alpha, any blending mode | ||
| 175 | - scaling or not */ | ||
| 176 | #if !defined(SDL_HAVE_BLIT_AUTO) && !defined(SDL_LEAN_AND_MEAN) | ||
| 177 | #define SDL_HAVE_BLIT_AUTO 1 | ||
| 178 | #endif | ||
| 179 | |||
| 180 | /* Run-Length-Encoding | ||
| 181 | - SDL_SetSurfaceColorKey() called with SDL_RLEACCEL flag */ | ||
| 182 | #if !defined(SDL_HAVE_RLE) && !defined(SDL_LEAN_AND_MEAN) | ||
| 183 | #define SDL_HAVE_RLE 1 | ||
| 184 | #endif | ||
| 185 | |||
| 186 | /* Software SDL_Renderer | ||
| 187 | - creation of software renderer | ||
| 188 | - *not* general blitting functions | ||
| 189 | - {blend,draw}{fillrect,line,point} internal functions */ | ||
| 190 | #if !defined(SDL_VIDEO_RENDER_SW) && !defined(SDL_LEAN_AND_MEAN) | ||
| 191 | #define SDL_VIDEO_RENDER_SW 1 | ||
| 192 | #endif | ||
| 193 | |||
| 194 | /* STB image conversion */ | ||
| 195 | #if !defined(SDL_HAVE_STB) && !defined(SDL_LEAN_AND_MEAN) | ||
| 196 | #define SDL_HAVE_STB 1 | ||
| 197 | #endif | ||
| 198 | |||
| 199 | /* YUV formats | ||
| 200 | - handling of YUV surfaces | ||
| 201 | - blitting and conversion functions */ | ||
| 202 | #if !defined(SDL_HAVE_YUV) && !defined(SDL_LEAN_AND_MEAN) | ||
| 203 | #define SDL_HAVE_YUV 1 | ||
| 204 | #endif | ||
| 205 | |||
| 206 | #ifdef SDL_CAMERA_DISABLED | ||
| 207 | #undef SDL_CAMERA_DRIVER_ANDROID | ||
| 208 | #undef SDL_CAMERA_DRIVER_COREMEDIA | ||
| 209 | #undef SDL_CAMERA_DRIVER_DUMMY | ||
| 210 | #undef SDL_CAMERA_DRIVER_EMSCRIPTEN | ||
| 211 | #undef SDL_CAMERA_DRIVER_MEDIAFOUNDATION | ||
| 212 | #undef SDL_CAMERA_DRIVER_PIPEWIRE | ||
| 213 | #undef SDL_CAMERA_DRIVER_V4L2 | ||
| 214 | #undef SDL_CAMERA_DRIVER_VITA | ||
| 215 | #endif | ||
| 216 | |||
| 217 | #ifdef SDL_RENDER_DISABLED | ||
| 218 | #undef SDL_VIDEO_RENDER_SW | ||
| 219 | #undef SDL_VIDEO_RENDER_D3D | ||
| 220 | #undef SDL_VIDEO_RENDER_D3D11 | ||
| 221 | #undef SDL_VIDEO_RENDER_D3D12 | ||
| 222 | #undef SDL_VIDEO_RENDER_GPU | ||
| 223 | #undef SDL_VIDEO_RENDER_METAL | ||
| 224 | #undef SDL_VIDEO_RENDER_OGL | ||
| 225 | #undef SDL_VIDEO_RENDER_OGL_ES2 | ||
| 226 | #undef SDL_VIDEO_RENDER_PS2 | ||
| 227 | #undef SDL_VIDEO_RENDER_PSP | ||
| 228 | #undef SDL_VIDEO_RENDER_VITA_GXM | ||
| 229 | #undef SDL_VIDEO_RENDER_VULKAN | ||
| 230 | #endif // SDL_RENDER_DISABLED | ||
| 231 | |||
| 232 | #ifdef SDL_GPU_DISABLED | ||
| 233 | #undef SDL_GPU_D3D12 | ||
| 234 | #undef SDL_GPU_METAL | ||
| 235 | #undef SDL_GPU_VULKAN | ||
| 236 | #undef SDL_VIDEO_RENDER_GPU | ||
| 237 | #endif // SDL_GPU_DISABLED | ||
| 238 | |||
| 239 | #if !defined(HAVE_LIBC) | ||
| 240 | // If not using _any_ C runtime, these have to be defined before SDL_thread.h | ||
| 241 | // gets included, so internal SDL_CreateThread calls will not try to reference | ||
| 242 | // the (unavailable and unneeded) _beginthreadex/_endthreadex functions. | ||
| 243 | #define SDL_BeginThreadFunction NULL | ||
| 244 | #define SDL_EndThreadFunction NULL | ||
| 245 | #endif | ||
| 246 | |||
| 247 | #ifdef SDL_NOLONGLONG | ||
| 248 | #error We cannot build a valid SDL3 library without long long support | ||
| 249 | #endif | ||
| 250 | |||
| 251 | /* Enable internal definitions in SDL API headers */ | ||
| 252 | #define SDL_INTERNAL | ||
| 253 | |||
| 254 | #include <SDL3/SDL.h> | ||
| 255 | #include <SDL3/SDL_intrin.h> | ||
| 256 | |||
| 257 | #define SDL_MAIN_NOIMPL // don't drag in header-only implementation of SDL_main | ||
| 258 | #include <SDL3/SDL_main.h> | ||
| 259 | |||
| 260 | // Set up for C function definitions, even when using C++ | ||
| 261 | #ifdef __cplusplus | ||
| 262 | extern "C" { | ||
| 263 | #endif | ||
| 264 | |||
| 265 | #include "SDL_utils_c.h" | ||
| 266 | #include "SDL_hashtable.h" | ||
| 267 | |||
| 268 | // Do any initialization that needs to happen before threads are started | ||
| 269 | extern void SDL_InitMainThread(void); | ||
| 270 | |||
| 271 | /* The internal implementations of these functions have up to nanosecond precision. | ||
| 272 | We can expose these functions as part of the API if we want to later. | ||
| 273 | */ | ||
| 274 | extern bool SDLCALL SDL_WaitSemaphoreTimeoutNS(SDL_Semaphore *sem, Sint64 timeoutNS); | ||
| 275 | extern bool SDLCALL SDL_WaitConditionTimeoutNS(SDL_Condition *cond, SDL_Mutex *mutex, Sint64 timeoutNS); | ||
| 276 | extern bool SDLCALL SDL_WaitEventTimeoutNS(SDL_Event *event, Sint64 timeoutNS); | ||
| 277 | |||
| 278 | // Ends C function definitions when using C++ | ||
| 279 | #ifdef __cplusplus | ||
| 280 | } | ||
| 281 | #endif | ||
| 282 | |||
| 283 | #endif // SDL_internal_h_ | ||
