21 #include "../SDL_internal.h" 31 #include "../events/SDL_events_c.h" 32 #include "../timer/SDL_timer_c.h" 40 #if SDL_VIDEO_OPENGL_ES 45 #if SDL_VIDEO_OPENGL_ES2 && !SDL_VIDEO_OPENGL 50 #ifndef GL_CONTEXT_RELEASE_BEHAVIOR_KHR 51 #define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB 56 #include <emscripten.h> 61 #if SDL_VIDEO_DRIVER_COCOA 64 #if SDL_VIDEO_DRIVER_X11 67 #if SDL_VIDEO_DRIVER_MIR 70 #if SDL_VIDEO_DRIVER_WAYLAND 73 #if SDL_VIDEO_DRIVER_VIVANTE 76 #if SDL_VIDEO_DRIVER_DIRECTFB 79 #if SDL_VIDEO_DRIVER_WINDOWS 82 #if SDL_VIDEO_DRIVER_WINRT 85 #if SDL_VIDEO_DRIVER_HAIKU 88 #if SDL_VIDEO_DRIVER_PANDORA 91 #if SDL_VIDEO_DRIVER_UIKIT 94 #if SDL_VIDEO_DRIVER_ANDROID 97 #if SDL_VIDEO_DRIVER_PSP 100 #if SDL_VIDEO_DRIVER_KMSDRM 103 #if SDL_VIDEO_DRIVER_RPI 106 #if SDL_VIDEO_DRIVER_NACL 109 #if SDL_VIDEO_DRIVER_EMSCRIPTEN 112 #if SDL_VIDEO_DRIVER_QNX 115 #if SDL_VIDEO_DRIVER_DUMMY 123 #define CHECK_WINDOW_MAGIC(window, retval) \ 125 SDL_UninitializedVideo(); \ 128 SDL_assert(window && window->magic == &_this->window_magic); \ 129 if (!window || window->magic != &_this->window_magic) { \ 130 SDL_SetError("Invalid window"); \ 134 #define CHECK_DISPLAY_INDEX(displayIndex, retval) \ 136 SDL_UninitializedVideo(); \ 139 SDL_assert(_this->displays != NULL); \ 140 SDL_assert(displayIndex >= 0 && displayIndex < _this->num_displays); \ 141 if (displayIndex < 0 || displayIndex >= _this->num_displays) { \ 142 SDL_SetError("displayIndex must be in the range 0 - %d", \ 143 _this->num_displays - 1); \ 147 #define FULLSCREEN_MASK (SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_FULLSCREEN) 158 #define SDL_WINDOWTEXTUREDATA "_SDL_WindowTextureData" 202 #if defined(__WIN32__) 207 #elif defined(__MACOSX__) 211 #elif defined(__LINUX__) 225 const char *vendor =
NULL;
228 if (glGetStringFunc) {
229 vendor = (
const char *) glGetStringFunc(
GL_VENDOR);
241 return hasAcceleratedOpenGL;
243 #elif SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 270 if (hint && *hint !=
'0' && *hint !=
'1' &&
297 return SDL_SetError(
"No hardware accelerated renderers available");
341 window->
w, window->
h);
352 const size_t allocsize = window->
h * data->
pitch;
360 *pitch = data->
pitch;
425 }
else if (a->
w != b->
w) {
427 }
else if (a->
h != b->
h) {
442 return SDL_SetError(
"Video subsystem has not been initialized");
475 #if !SDL_TIMERS_DISABLED 490 if (driver_name ==
NULL) {
493 if (driver_name !=
NULL) {
494 for (i = 0; bootstrap[
i]; ++
i) {
497 video = bootstrap[
i]->
create(index);
503 for (i = 0; bootstrap[
i]; ++
i) {
505 video = bootstrap[
i]->
create(index);
540 return SDL_SetError(
"The video driver did not add any displays");
616 displays[
index] = *display;
649 for (displayIndex = 0; displayIndex < _this->
num_displays; ++displayIndex) {
650 if (display == &_this->
displays[displayIndex]) {
690 if (displayIndex == 0) {
729 display = &_this->
displays[displayIndex];
732 if (_this->
GetDisplayDPI(_this, display, ddpi, hdpi, vdpi) == 0) {
749 display = &_this->
displays[displayIndex];
762 for (i = 0; i < nmodes; ++
i) {
763 if (
cmpmodes(mode, &modes[i]) == 0) {
779 modes[nmodes] = *
mode;
815 display = &_this->
displays[displayIndex];
817 return SDL_SetError(
"index must be in the range of 0 - %d",
833 display = &_this->
displays[displayIndex];
847 display = &_this->
displays[displayIndex];
860 int target_refresh_rate;
864 if (!mode || !closest) {
865 SDL_SetError(
"Missing desired mode or closest mode parameter");
871 target_format = mode->
format;
887 if (current->
w && (current->
w < mode->
w)) {
891 if (current->
h && (current->
h < mode->
h)) {
892 if (current->
w && (current->
w == mode->
w)) {
901 if (!match || current->
w < match->
w || current->
h < match->
h) {
907 if (current->
format == target_format ||
929 if (match->
w && match->
h) {
930 closest->
w = match->
w;
931 closest->
h = match->
h;
933 closest->
w = mode->
w;
934 closest->
h = mode->
h;
970 display = &_this->
displays[displayIndex];
981 display_mode = *
mode;
984 if (!display_mode.
format) {
987 if (!display_mode.
w) {
990 if (!display_mode.
h) {
999 return SDL_SetError(
"No video mode large enough for %dx%d",
1000 display_mode.
w, display_mode.
h);
1008 if (
SDL_memcmp(&display_mode, ¤t_mode,
sizeof(display_mode)) == 0) {
1014 return SDL_SetError(
"SDL video driver doesn't support changing display mode");
1028 return &_this->
displays[displayIndex];
1037 int closest_dist = 0x7FFFFFFF;
1046 displayIndex = (window->
x & 0xFFFF);
1050 return displayIndex;
1054 displayIndex = (window->
y & 0xFFFF);
1058 return displayIndex;
1069 center.
x = window->
x + window->
w / 2;
1070 center.
y = window->
y + window->
h / 2;
1077 delta.
x = center.
x - (rect.
x + rect.
w / 2);
1078 delta.
y = center.
y - (rect.
y + rect.
h / 2);
1079 dist = (delta.
x*delta.
x + delta.
y*delta.
y);
1080 if (dist < closest_dist) {
1082 closest_dist = dist;
1095 if (displayIndex >= 0) {
1096 return &_this->
displays[displayIndex];
1135 if (!fullscreen_mode.
w) {
1138 if (!fullscreen_mode.
h) {
1149 &fullscreen_mode)) {
1150 return SDL_SetError(
"Couldn't find display mode match");
1154 *mode = fullscreen_mode;
1208 if (!Cocoa_SetWindowFullscreenSpace(window,
SDL_FALSE)) {
1219 if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) {
1220 if (Cocoa_IsWindowInFullscreenSpace(window) != fullscreen) {
1227 #elif __WINRT__ && (NTDDI_VERSION < NTDDI_WIN10) 1271 for (other = _this->
windows; other; other = other->
next) {
1274 if (other == window) {
1275 setDisplayMode = fullscreen;
1281 if (setDisplayMode) {
1289 if (other->
w == fullscreen_mode.
w && other->
h == fullscreen_mode.
h) {
1318 fullscreen_mode.
w, fullscreen_mode.
h);
1350 #define CREATE_FLAGS \ 1351 (SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_ALWAYS_ON_TOP | SDL_WINDOW_SKIP_TASKBAR | SDL_WINDOW_POPUP_MENU | SDL_WINDOW_UTILITY | SDL_WINDOW_TOOLTIP | SDL_WINDOW_VULKAN | SDL_WINDOW_MINIMIZED) 1379 for (window = _this->
windows; window; window = window->
next) {
1433 if ((w > 16384) || (h > 16384)) {
1439 #if (SDL_VIDEO_OPENGL && __MACOSX__) || __IPHONEOS__ || __ANDROID__ || __NACL__ 1446 SDL_SetError(
"OpenGL support is either not configured in SDL " 1447 "or not available in current SDL video driver " 1448 "(%s) or platform", _this->
name);
1456 if (flags & SDL_WINDOW_VULKAN) {
1458 SDL_SetError(
"Vulkan support is either not configured in SDL " 1459 "or not available in current SDL video driver " 1460 "(%s) or platform", _this->
name);
1463 if (flags & SDL_WINDOW_OPENGL) {
1464 SDL_SetError(
"Vulkan and OpenGL not supported on same window");
1477 flags &= ~SDL_WINDOW_ALLOW_HIGHDPI;
1501 window->
x = bounds.
x + (bounds.
w -
w) / 2;
1504 window->
y = bounds.
y + (bounds.
h -
h) / 2;
1520 window->
x = bounds.
x;
1521 window->
y = bounds.
y;
1522 window->
w = bounds.
w;
1523 window->
h = bounds.
h;
1546 #if !defined(__WIN32__) 1552 #if __WINRT__ && (NTDDI_VERSION < NTDDI_WIN10) 1561 flags = window->
flags;
1622 return SDL_SetError(
"OpenGL support is either not configured in SDL " 1623 "or not available in current SDL video driver " 1624 "(%s) or platform", _this->
name);
1650 if ((window->
flags & SDL_WINDOW_OPENGL) != (flags & SDL_WINDOW_OPENGL)) {
1651 if (flags & SDL_WINDOW_OPENGL) {
1662 SDL_SetError(
"Can't change SDL_WINDOW_VULKAN window flag");
1666 if ((window->
flags & SDL_WINDOW_VULKAN) && (flags & SDL_WINDOW_OPENGL)) {
1667 SDL_SetError(
"Vulkan and OpenGL not supported on same window");
1677 if (loaded_opengl) {
1679 window->
flags &= ~SDL_WINDOW_OPENGL;
1685 if (flags & SDL_WINDOW_FOREIGN) {
1728 for (window = _this->
windows; window; window = window->
next) {
1729 if (window->
id ==
id) {
1741 return window->
flags;
1749 if (title == window->
title) {
1782 if (!window->
icon) {
1799 if (name ==
NULL || name[0] ==
'\0') {
1806 for (data = window->
data; data; prev = data, data = data->
next) {
1808 void *last_value = data->
data;
1812 data->
data = userdata;
1831 data->
data = userdata;
1846 if (name ==
NULL || name[0] ==
'\0') {
1851 for (data = window->
data; data; data = data->
next) {
1865 int displayIndex = (x & 0xFFFF);
1875 x = bounds.
x + (bounds.
w - window->
w) / 2;
1878 y = bounds.
y + (bounds.
h - window->
h) / 2;
1923 if (displayIndex >= 0) {
1951 const int want = (bordered !=
SDL_FALSE);
1969 const int want = (resizable !=
SDL_FALSE);
2023 if (window->
w == w && window->
h == h) {
2047 if (!top) { top = &dummy; }
2048 if (!left) { left = &dummy; }
2049 if (!right) { right = &dummy; }
2050 if (!bottom) { bottom = &dummy; }
2053 *top = *left = *bottom = *right = 0;
2077 if ((window->
max_w && min_w >= window->
max_w) ||
2079 SDL_SetError(
"SDL_SetWindowMinimumSize(): Tried to set minimum size larger than maximum size");
2083 window->
min_w = min_w;
2084 window->
min_h = min_h;
2100 *min_w = window->
min_w;
2103 *min_h = window->
min_h;
2120 if (max_w <= window->min_w || max_h <= window->min_h) {
2121 SDL_SetError(
"SDL_SetWindowMaximumSize(): Tried to set maximum size smaller than minimum size");
2125 window->
max_w = max_w;
2126 window->
max_h = max_h;
2142 *max_w = window->
max_w;
2145 *max_h = window->
max_h;
2264 window->
flags |= oldflags;
2275 Uint32 Rmask, Gmask, Bmask, Amask;
2320 full_rect.
w = window->
w;
2321 full_rect.
h = window->
h;
2332 return SDL_SetError(
"Window surface is invalid, please call SDL_GetWindowSurface() to get a new surface");
2372 if (opacity < 0.0
f) {
2374 }
else if (opacity > 1.0
f) {
2392 *out_opacity = window->
opacity;
2435 if (!window->
gamma) {
2465 if (!window->
gamma) {
2469 if (!window->
gamma) {
2480 for (i = 0; i < 256; ++
i) {
2517 if (grabbed_window && (grabbed_window != window)) {
2525 }
else if (grabbed_window == window) {
2645 if (Cocoa_IsWindowInFullscreenSpace(window)) {
2678 for (window = _this->
windows; window; window = window->
next) {
2742 while (window->
data) {
2867 return SDL_SetError(
"No dynamic GL support in current SDL video driver (%s)", _this->
name);
2898 SDL_SetError(
"No dynamic GL support in current SDL video driver (%s)", _this->
name);
2920 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 2924 return (verstr && (
SDL_atoi(verstr) >= 3));
2931 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 2933 const char *extensions;
2935 const char *where, *terminator;
2939 if (where || *extension ==
'\0') {
2944 if (start && *start ==
'0') {
2951 if (!glGetStringFunc) {
2963 if ((!glGetStringiFunc) || (!glGetIntegervFunc)) {
2967 #ifndef GL_NUM_EXTENSIONS 2968 #define GL_NUM_EXTENSIONS 0x821D 2971 for (i = 0; i < num_exts; i++) {
2972 const char *thisext = (
const char *) glGetStringiFunc(
GL_EXTENSIONS, i);
3000 if (where == extensions || *(where - 1) ==
' ')
3001 if (*terminator ==
' ' || *terminator ==
'\0')
3023 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 3073 #if SDL_VIDEO_OPENGL 3077 #elif SDL_VIDEO_OPENGL_ES2 3081 #elif SDL_VIDEO_OPENGL_ES 3100 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 3178 retval =
SDL_SetError(
"Unknown OpenGL context flag %d", value);
3188 retval =
SDL_SetError(
"Unknown OpenGL context profile %d", value);
3221 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 3232 #if SDL_VIDEO_OPENGL 3236 GLenum attachmentattrib = 0;
3252 #if SDL_VIDEO_OPENGL 3258 #if SDL_VIDEO_OPENGL 3264 #if SDL_VIDEO_OPENGL 3270 #if SDL_VIDEO_OPENGL 3276 #if SDL_VIDEO_OPENGL 3287 #if SDL_VIDEO_OPENGL 3294 #if SDL_VIDEO_OPENGL 3300 #if SDL_VIDEO_OPENGL 3333 #if SDL_VIDEO_OPENGL 3341 int rsize = 0, gsize = 0, bsize = 0, asize = 0;
3357 *value = rsize + gsize + bsize + asize;
3421 #if SDL_VIDEO_OPENGL 3423 if (!glGetStringFunc) {
3428 glGetFramebufferAttachmentParameterivFunc =
SDL_GL_GetProcAddress(
"glGetFramebufferAttachmentParameteriv");
3430 if (glGetFramebufferAttachmentParameterivFunc) {
3431 glGetFramebufferAttachmentParameterivFunc(
GL_FRAMEBUFFER, attachment, attachmentattrib, (
GLint *) value);
3440 if (glGetIntegervFunc) {
3441 glGetIntegervFunc(attrib, (
GLint *) value);
3448 if (!glGetErrorFunc) {
3452 error = glGetErrorFunc();
3474 SDL_SetError(
"The specified window isn't an OpenGL window");
3507 return SDL_SetError(
"The specified window isn't an OpenGL window");
3558 return SDL_SetError(
"No OpenGL context has been made current");
3562 return SDL_SetError(
"Setting the swap interval is not supported");
3586 SDL_SetError(
"The specified window isn't an OpenGL window");
3591 SDL_SetError(
"The specified window has not been made current");
3601 if (!_this || !context) {
3622 #define SET_MASKBIT(icon, x, y, mask) \ 3623 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8))) 3625 colorkey = icon->
format->colorkey;
3630 for (y = 0; y < icon->
h; ++
y) {
3632 for (x = 0; x < icon->
w; ++
x) {
3633 if (*pixels++ == colorkey) {
3634 SET_MASKBIT(icon, x, y,
mask);
3644 for (y = 0; y < icon->
h; ++
y) {
3646 for (x = 0; x < icon->
w; ++
x) {
3647 if ((flags & 1) && *pixels == colorkey) {
3648 SET_MASKBIT(icon, x, y,
mask);
3649 }
else if ((flags & 2)
3651 SET_MASKBIT(icon, x, y,
mask);
3662 for (y = 0; y < icon->
h; ++
y) {
3664 for (x = 0; x < icon->
w; ++
x) {
3665 if ((flags & 1) && *pixels == colorkey) {
3666 SET_MASKBIT(icon, x, y,
mask);
3667 }
else if ((flags & 2)
3669 SET_MASKBIT(icon, x, y,
mask);
3685 if (icon && _this->SetIcon) {
3688 int mask_len = icon->
h * (icon->
w + 7) / 8;
3695 if (icon->
flags & SDL_SRCCOLORKEY)
3697 if (icon->
flags & SDL_SRCALPHA)
3700 CreateMaskFromColorKeyOrAlpha(icon, mask, flags);
3702 _this->SetIcon(_this, icon, mask);
3705 _this->SetIcon(_this, icon, mask);
3803 #if SDL_VIDEO_DRIVER_ANDROID 3806 #if SDL_VIDEO_DRIVER_WINDOWS 3809 #if SDL_VIDEO_DRIVER_WINRT 3812 #if SDL_VIDEO_DRIVER_COCOA 3815 #if SDL_VIDEO_DRIVER_UIKIT 3818 #if SDL_VIDEO_DRIVER_X11 3823 #if SDL_VIDEO_DRIVER_WINDOWS || SDL_VIDEO_DRIVER_WINRT || SDL_VIDEO_DRIVER_COCOA || SDL_VIDEO_DRIVER_UIKIT || SDL_VIDEO_DRIVER_X11 3848 int show_cursor_prev;
3852 if (!messageboxdata) {
3867 buttonid = &dummybutton;
3875 #if SDL_VIDEO_DRIVER_ANDROID 3877 Android_ShowMessageBox(messageboxdata, buttonid) == 0) {
3881 #if SDL_VIDEO_DRIVER_WINDOWS 3884 WIN_ShowMessageBox(messageboxdata, buttonid) == 0) {
3888 #if SDL_VIDEO_DRIVER_WINRT 3891 WINRT_ShowMessageBox(messageboxdata, buttonid) == 0) {
3895 #if SDL_VIDEO_DRIVER_COCOA 3898 Cocoa_ShowMessageBox(messageboxdata, buttonid) == 0) {
3902 #if SDL_VIDEO_DRIVER_UIKIT 3905 UIKit_ShowMessageBox(messageboxdata, buttonid) == 0) {
3909 #if SDL_VIDEO_DRIVER_X11 3912 X11_ShowMessageBox(messageboxdata, buttonid) == 0) {
3920 if (current_window) {
3922 if (mouse_captured) {
3936 #ifdef __EMSCRIPTEN__ 3942 alert(UTF8ToString($0) +
"\n\n" + UTF8ToString($1));
3992 float den2 = hinches * hinches + vinches * vinches;
3997 return (
float)(
SDL_sqrt((
double)hpix * (
double)hpix + (
double)vpix * (
double)vpix) /
4018 for (window = _this->
windows; window !=
NULL; window = window->
next) {
4042 for (window = _this->
windows; window !=
NULL; window = window->
next) {
4049 #define NOT_A_VULKAN_WINDOW "The specified window isn't a Vulkan window" 4060 return SDL_SetError(
"Vulkan loader library already loaded");
4065 return SDL_SetError(
"Vulkan support is either not configured in SDL " 4066 "or not available in current SDL video driver " 4067 "(%s) or platform", _this->
name);
4127 VkInstance instance,
#define SDL_CreateTexture
#define SDL_WINDOWPOS_ISUNDEFINED(X)
int(* Vulkan_LoadLibrary)(_THIS, const char *path)
static int SDL_GetNumDisplayModesForDisplay(SDL_VideoDisplay *display)
void SDL_GL_ResetAttributes()
Reset all previously set OpenGL context attributes to their default values.
SDL_Window * SDL_GetFocusWindow(void)
#define SDL_RenderSetViewport
void * SDL_GetWindowData(SDL_Window *window, const char *name)
Retrieve the data pointer associated with a window.
void SDL_OnWindowShown(SDL_Window *window)
int(* GetDisplayDPI)(_THIS, SDL_VideoDisplay *display, float *ddpi, float *hdpi, float *vdpi)
#define SDL_ConvertSurfaceFormat
void SDL_OnWindowLeave(SDL_Window *window)
#define GL_SAMPLE_BUFFERS
int SDL_GetNumVideoDrivers(void)
Get the number of video drivers compiled into SDL.
SDL_Mouse * SDL_GetMouse(void)
void SDL_OnWindowFocusGained(SDL_Window *window)
VideoBootStrap X11_bootstrap
void(* RestoreWindow)(_THIS, SDL_Window *window)
const char * SDL_GetWindowTitle(SDL_Window *window)
Get the title of a window, in UTF-8 format.
void SDL_SetWindowSize(SDL_Window *window, int w, int h)
Set the size of a window's client area.
void SDL_SetKeyboardFocus(SDL_Window *window)
SDL_DisplayMode fullscreen_mode
void SDL_GL_GetDrawableSize(SDL_Window *window, int *w, int *h)
Get the size of a window's underlying drawable in pixels (for use with glViewport).
int(* SetWindowHitTest)(SDL_Window *window, SDL_bool enabled)
#define SDL_PIXELLAYOUT(X)
void SDL_OnApplicationDidReceiveMemoryWarning(void)
GLint GLint GLint GLint GLint x
VideoBootStrap KMSDRM_bootstrap
GLuint GLsizei const GLchar * message
void SDL_VideoQuit(void)
Shuts down the video subsystem.
#define FULLSCREEN_VISIBLE(W)
SDL_bool(* IsScreenKeyboardShown)(_THIS, SDL_Window *window)
SDL_bool SDL_IsScreenKeyboardShown(SDL_Window *window)
Returns whether the screen keyboard is shown for given window.
void SDL_OnApplicationWillEnterForeground(void)
int SDL_GetDisplayMode(int displayIndex, int index, SDL_DisplayMode *mode)
Fill in information about a specific display mode.
GLuint GLuint GLsizei count
VideoBootStrap MIR_bootstrap
void SDL_ShowWindow(SDL_Window *window)
Show a window.
SDL_TLSID current_glwin_tls
VideoBootStrap Wayland_bootstrap
#define NOT_A_VULKAN_WINDOW
#define SDL_GetNumRenderDrivers
int SDL_GL_SetSwapInterval(int interval)
Set the swap interval for the current OpenGL context.
#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS
Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true...
GLfloat GLfloat GLfloat GLfloat h
#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER
A variable controlling whether the screensaver is enabled.
static void SDL_RestoreMousePosition(SDL_Window *window)
int SDL_UpdateWindowSurfaceRects(SDL_Window *window, const SDL_Rect *rects, int numrects)
Copy a number of rectangles on the window surface to the screen.
#define SDL_QuitSubSystem
#define SDL_HINT_VIDEO_HIGHDPI_DISABLED
If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
int SDL_GL_LoadLibrary(const char *path)
Dynamically load an OpenGL library.
The structure that defines a point.
A collection of pixels used in software blitting.
int(* GL_SetSwapInterval)(_THIS, int interval)
#define GL_CONTEXT_RELEASE_BEHAVIOR
SDL_bool SDL_IsScreenSaverEnabled()
Returns whether the screensaver is currently enabled (default off).
void SDL_GetWindowPosition(SDL_Window *window, int *x, int *y)
Get the position of a window.
void SDL_SetWindowTitle(SDL_Window *window, const char *title)
Set the title of a window, in UTF-8 format.
void SDL_GL_DeleteContext(SDL_GLContext context)
Delete an OpenGL context.
#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE
void(* ShowWindow)(_THIS, SDL_Window *window)
Uint32 texture_formats[16]
static screen_context_t context
The structure that defines a display mode.
int SDL_SetWindowInputFocus(SDL_Window *window)
Explicitly sets input focus to the window.
VideoBootStrap DirectFB_bootstrap
void SDL_SetWindowGrab(SDL_Window *window, SDL_bool grabbed)
Set a window's input grab mode.
#define SDL_WINDOWPOS_ISCENTERED(X)
SDL_HitTestResult(* SDL_HitTest)(SDL_Window *win, const SDL_Point *area, void *data)
Callback used for hit-testing.
void(* StartTextInput)(_THIS)
void SDL_OnWindowMinimized(SDL_Window *window)
void(* SetWindowSize)(_THIS, SDL_Window *window)
#define SDL_BYTESPERPIXEL(X)
#define SDL_InitSubSystem
SDL_Window * SDL_GetWindowFromID(Uint32 id)
Get a window from a stored ID, or NULL if it doesn't exist.
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
int(* GetWindowBordersSize)(_THIS, SDL_Window *window, int *top, int *left, int *bottom, int *right)
void SDL_GL_DeduceMaxSupportedESProfile(int *major, int *minor)
void SDL_SetWindowMinimumSize(SDL_Window *window, int min_w, int min_h)
Set the minimum size of a window's client area.
int SDL_SetWindowBrightness(SDL_Window *window, float brightness)
Set the brightness (gamma correction) for a window.
int SDL_SendWindowEvent(SDL_Window *window, Uint8 windowevent, int data1, int data2)
#define SDL_SetRelativeMouseMode
float SDL_GetWindowBrightness(SDL_Window *window)
Get the brightness (gamma correction) for a window.
int SDL_GetWindowOpacity(SDL_Window *window, float *out_opacity)
Get the opacity of a window.
#define SDL_ISPIXELFORMAT_ALPHA(format)
VideoBootStrap Emscripten_bootstrap
void SDL_SetMouseFocus(SDL_Window *window)
int SDL_SetWindowHitTest(SDL_Window *window, SDL_HitTest callback, void *userdata)
Provide a callback that decides if a window region has special properties.
int SDL_KeyboardInit(void)
void SDL_HideWindow(SDL_Window *window)
Hide a window.
#define SDL_GetKeyboardFocus
#define SDL_InvalidParamError(param)
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp
#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
GLdouble GLdouble GLdouble GLdouble top
VideoBootStrap NACL_bootstrap
#define SDL_GetRenderDriverInfo
SDL_Surface * SDL_GetWindowSurface(SDL_Window *window)
Get the SDL surface associated with the window.
SDL_Window * SDL_CreateWindowFrom(const void *data)
Create an SDL window from an existing native window.
void SDL_MinimizeWindow(SDL_Window *window)
Minimize a window to an iconic representation.
SDL_GLContext SDL_GL_CreateContext(SDL_Window *window)
Create an OpenGL context for use with an OpenGL window, and make it current.
#define SDL_CreateRGBSurfaceFrom
#define SDL_UpdateTexture
#define GL_ACCUM_ALPHA_BITS
int(* GL_LoadLibrary)(_THIS, const char *path)
SDL_DisplayMode * SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode *mode, SDL_DisplayMode *closest)
Get the closest match to the requested display mode.
int SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode *mode)
Fill in information about the desktop display mode.
GLuint const GLchar * name
VideoBootStrap HAIKU_bootstrap
int SDL_GL_GetSwapInterval(void)
Get the swap interval for the current OpenGL context.
int(* SetDisplayMode)(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
void SDL_RaiseWindow(SDL_Window *window)
Raise a window above other windows and set the input focus.
#define SDL_GetHintBoolean
void(* SetWindowBordered)(_THIS, SDL_Window *window, SDL_bool bordered)
void(* GL_GetDrawableSize)(_THIS, SDL_Window *window, int *w, int *h)
void SDL_ToggleDragAndDropSupport(void)
#define SDL_VERSION(x)
Macro to determine SDL version program was compiled against.
struct SDL_VideoDevice::@33 gl_config
Uint32 SDL_GetWindowFlags(SDL_Window *window)
Get the window flags.
static SDL_VideoDevice * _this
static SDL_INLINE SDL_bool IsAcceptingDragAndDrop(void)
int SDL_SetWindowOpacity(SDL_Window *window, float opacity)
Set the opacity for a window.
SDL_GLattr
OpenGL configuration attributes.
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
void SDL_OnApplicationWillTerminate(void)
void(* HideWindow)(_THIS, SDL_Window *window)
void SDL_OnWindowRestored(SDL_Window *window)
#define GL_NUM_EXTENSIONS
const char * SDL_GetCurrentVideoDriver()
Returns the name of the currently initialized video driver.
const char * SDL_GetVideoDriver(int index)
Get the name of a built in video driver.
void(* RaiseWindow)(_THIS, SDL_Window *window)
struct SDL_WindowUserData * next
SDL_VideoDisplay * SDL_GetDisplay(int displayIndex)
static SDL_INLINE SDL_bool isAtLeastGL3(const char *verstr)
#define SDL_GetRelativeMouseMode
int SDL_GetWindowDisplayMode(SDL_Window *window, SDL_DisplayMode *mode)
Fill in information about the display mode used when a fullscreen window is visible.
void(* SetTextInputRect)(_THIS, SDL_Rect *rect)
SDL_bool(* Vulkan_GetInstanceExtensions)(_THIS, SDL_Window *window, unsigned *count, const char **names)
VideoBootStrap Android_bootstrap
VideoBootStrap VIVANTE_bootstrap
const char * SDL_GetDisplayName(int displayIndex)
Get the name of a display in UTF-8 encoding.
SDL_bool SDL_ShouldAllowTopmost(void)
void * SDL_GLContext
An opaque handle to an OpenGL context.
void * SDL_SetWindowData(SDL_Window *window, const char *name, void *userdata)
Associate an arbitrary named pointer with a window.
VideoBootStrap WINRT_bootstrap
SDL_VideoDisplay * SDL_GetDisplayForWindow(SDL_Window *window)
SDL_bool(* GetWindowWMInfo)(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
static int SDL_UpdateWindowTexture(SDL_VideoDevice *unused, SDL_Window *window, const SDL_Rect *rects, int numrects)
SDL_GLContext current_glctx
int SDL_GetIndexOfDisplay(SDL_VideoDisplay *display)
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
int SDL_SetWindowDisplayMode(SDL_Window *window, const SDL_DisplayMode *mode)
Set the display mode used when a fullscreen window is visible.
#define SDL_GetEventState(type)
static int cmpmodes(const void *A, const void *B)
VideoBootStrap WINDOWS_bootstrap
void(* Vulkan_GetDrawableSize)(_THIS, SDL_Window *window, int *w, int *h)
SDL_bool(* Vulkan_CreateSurface)(_THIS, SDL_Window *window, VkInstance instance, VkSurfaceKHR *surface)
#define SDL_WINDOWTEXTUREDATA
static SDL_Renderer * renderer
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
void SDL_SetWindowMaximumSize(SDL_Window *window, int max_w, int max_h)
Set the maximum size of a window's client area.
void SDL_OnApplicationDidEnterBackground(void)
void SDL_OnWindowEnter(SDL_Window *window)
set set set set set set set set set set set set set set set set set set set set *set set set macro pixldst op &r &cond WK op &r &cond WK op &r &cond WK else op &m &cond &ia op &r &cond WK else op &m &cond &ia elseif elseif else error unsupported base if elseif elseif else error unsupported unaligned pixldst unaligned endm macro pixst base base else pixldst base endif endm macro PF base if bpp PF set rept prefetch_distance PF set OFFSET endr endif endm macro preload_leading_step2 base if bpp ifc DST PF PF else if bpp lsl PF PF lsl PF PF lsl PF PF PF else PF lsl PF lsl PF lsl PF endif SIZE macro preload_middle scratch_holds_offset if bpp if else PF PF endif endif endif endm macro preload_trailing base if bpp if bpp *pix_per_block PF PF lsl PF PF PF PF PF else PF lsl PF lsl PF PF PF PF PF base if bpp if narrow_case &&bpp<=dst_w_bpp) PF bic, WK0, base, #31 PF pld, [WK0] PF add, WK1, base, X, LSL #bpp_shift PF sub, WK1, WK1, #1 PF bic, WK1, WK1, #31 PF cmp, WK1, WK0 PF beq, 90f PF pld, [WK1]90:.else PF bic, WK0, base, #31 PF pld, [WK0] PF add, WK1, base, X, lsl #bpp_shift PF sub, WK1, WK1, #1 PF bic, WK1, WK1, #31 PF cmp, WK1, WK0 PF beq, 92f91:PF add, WK0, WK0, #32 PF cmp, WK0, WK1 PF pld, [WK0] PF bne, 91b92:.endif .endif.endm.macro conditional_process1_helper cond, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx process_head cond, numbytes, firstreg, unaligned_src, unaligned_mask, 0 .if decrementx sub &cond X, X, #8 *numbytes/dst_w_bpp .endif process_tail cond, numbytes, firstreg .if !((flags) &FLAG_PROCESS_DOES_STORE) pixst cond, numbytes, firstreg, DST .endif.endm.macro conditional_process1 cond, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx .if(flags) &FLAG_BRANCH_OVER .ifc cond, mi bpl 100f .endif .ifc cond, cs bcc 100f .endif .ifc cond, ne beq 100f .endif conditional_process1_helper, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx100:.else conditional_process1_helper cond, process_head, process_tail, numbytes, firstreg, unaligned_src, unaligned_mask, decrementx .endif.endm.macro conditional_process2 test, cond1, cond2, process_head, process_tail, numbytes1, numbytes2, firstreg1, firstreg2, unaligned_src, unaligned_mask, decrementx .if(flags) &(FLAG_DST_READWRITE|FLAG_BRANCH_OVER|FLAG_PROCESS_CORRUPTS_PSR|FLAG_PROCESS_DOES_STORE) test conditional_process1 cond1, process_head, process_tail, numbytes1, firstreg1, unaligned_src, unaligned_mask, decrementx .if(flags) &FLAG_PROCESS_CORRUPTS_PSR test .endif conditional_process1 cond2, process_head, process_tail, numbytes2, firstreg2, unaligned_src, unaligned_mask, decrementx .else test process_head cond1, numbytes1, firstreg1, unaligned_src, unaligned_mask, 0 process_head cond2, numbytes2, firstreg2, unaligned_src, unaligned_mask, 0 .if decrementx sub &cond1 X, X, #8 *numbytes1/dst_w_bpp sub &cond2 X, X, #8 *numbytes2/dst_w_bpp .endif process_tail cond1, numbytes1, firstreg1 process_tail cond2, numbytes2, firstreg2 pixst cond1, numbytes1, firstreg1, DST pixst cond2, numbytes2, firstreg2, DST .endif.endm.macro test_bits_1_0_ptr .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 movs SCRATCH, X, lsl #32-1 .else movs SCRATCH, WK0, lsl #32-1 .endif.endm.macro test_bits_3_2_ptr .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 movs SCRATCH, X, lsl #32-3 .else movs SCRATCH, WK0, lsl #32-3 .endif.endm.macro leading_15bytes process_head, process_tail .set DECREMENT_X, 1 .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 .set DECREMENT_X, 0 sub X, X, WK0, lsr #dst_bpp_shift str X, [sp, #LINE_SAVED_REG_COUNT *4] mov X, WK0 .endif .if dst_w_bpp==8 conditional_process2 test_bits_1_0_ptr, mi, cs, process_head, process_tail, 1, 2, 1, 2, 1, 1, DECREMENT_X .elseif dst_w_bpp==16 test_bits_1_0_ptr conditional_process1 cs, process_head, process_tail, 2, 2, 1, 1, DECREMENT_X .endif conditional_process2 test_bits_3_2_ptr, mi, cs, process_head, process_tail, 4, 8, 1, 2, 1, 1, DECREMENT_X .if(flags) &FLAG_PROCESS_CORRUPTS_WK0 ldr X, [sp, #LINE_SAVED_REG_COUNT *4] .endif.endm.macro test_bits_3_2_pix movs SCRATCH, X, lsl #dst_bpp_shift+32-3.endm.macro test_bits_1_0_pix .if dst_w_bpp==8 movs SCRATCH, X, lsl #dst_bpp_shift+32-1 .else movs SCRATCH, X, lsr #1 .endif.endm.macro trailing_15bytes process_head, process_tail, unaligned_src, unaligned_mask conditional_process2 test_bits_3_2_pix, cs, mi, process_head, process_tail, 8, 4, 0, 2, unaligned_src, unaligned_mask, 0 .if dst_w_bpp==16 test_bits_1_0_pix conditional_process1 cs, process_head, process_tail, 2, 0, unaligned_src, unaligned_mask, 0 .elseif dst_w_bpp==8 conditional_process2 test_bits_1_0_pix, cs, mi, process_head, process_tail, 2, 1, 0, 1, unaligned_src, unaligned_mask, 0 .endif.endm.macro wide_case_inner_loop process_head, process_tail, unaligned_src, unaligned_mask, dst_alignment110:.set SUBBLOCK, 0 .rept pix_per_block *dst_w_bpp/128 process_head, 16, 0, unaligned_src, unaligned_mask, 1 .if(src_bpp > 0) &&(mask_bpp==0) &&((flags) &FLAG_PROCESS_PRESERVES_SCRATCH) preload_middle src_bpp, SRC, 1 .elseif(src_bpp==0) &&(mask_bpp > 0) &&((flags) &FLAG_PROCESS_PRESERVES_SCRATCH) preload_middle mask_bpp, MASK, 1 .else preload_middle src_bpp, SRC, 0 preload_middle mask_bpp, MASK, 0 .endif .if(dst_r_bpp > 0) &&((SUBBLOCK % 2)==0) &&(((flags) &FLAG_NO_PRELOAD_DST)==0) PF pld, [DST, #32 *prefetch_distance - dst_alignment] .endif process_tail, 16, 0 .if !((flags) &FLAG_PROCESS_DOES_STORE) pixst, 16, 0, DST .endif .set SUBBLOCK, SUBBLOCK+1 .endr subs X, X, #pix_per_block bhs 110b.endm.macro wide_case_inner_loop_and_trailing_pixels process_head, process_tail, process_inner_loop, exit_label, unaligned_src, unaligned_mask .if dst_r_bpp > tst bne process_inner_loop DST_PRELOAD_BIAS endif preload_trailing SRC preload_trailing MASK DST endif add medium_case_inner_loop_and_trailing_pixels unaligned_mask endm macro medium_case_inner_loop_and_trailing_pixels unused
SDL_Window * SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags)
Create a window with the specified position, dimensions, and flags.
void SDL_DestroyWindow(SDL_Window *window)
Destroy a window.
int SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect *rect)
Get the usable desktop area represented by a display, with the primary display located at 0...
void(* Vulkan_UnloadLibrary)(_THIS)
int SDL_GL_MakeCurrent(SDL_Window *window, SDL_GLContext ctx)
Set up an OpenGL context for rendering into an OpenGL window.
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
void SDL_GL_UnloadLibrary(void)
Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
VideoBootStrap QNX_bootstrap
#define SDL_HINT_ALLOW_TOPMOST
If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it...
SDL_DisplayMode * display_modes
SDL_bool SDL_GetWindowGrab(SDL_Window *window)
Get a window's input grab mode.
void SDL_UpdateWindowGrab(SDL_Window *window)
void(* SetWindowMinimumSize)(_THIS, SDL_Window *window)
Uint32 SDL_GetWindowPixelFormat(SDL_Window *window)
Get the pixel format associated with the window.
SDL_DisplayMode current_mode
void SDL_Vulkan_GetDrawableSize(SDL_Window *window, int *w, int *h)
Get the size of a window's underlying drawable in pixels (for use with setting viewport, scissor & etc).
GLubyte GLubyte GLubyte GLubyte w
GLsizei const GLfloat * value
SDL_VideoDisplay * displays
int(* GetDisplayBounds)(_THIS, SDL_VideoDisplay *display, SDL_Rect *rect)
void(* DestroyWindow)(_THIS, SDL_Window *window)
void(* StopTextInput)(_THIS)
void SDL_GetWindowSize(SDL_Window *window, int *w, int *h)
Get the size of a window's client area.
static Uint32 callback(Uint32 interval, void *param)
void SDL_OnApplicationDidBecomeActive(void)
void(* SetWindowIcon)(_THIS, SDL_Window *window, SDL_Surface *icon)
Uint32 WINRT_DetectWindowFlags(SDL_Window *window)
int SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode *mode)
Fill in information about the current display mode.
int SDL_SetWindowGammaRamp(SDL_Window *window, const Uint16 *red, const Uint16 *green, const Uint16 *blue)
Set the gamma ramp for a window.
GLint GLint GLint GLint GLint GLint y
SDL_bool SDL_HasWindows(void)
#define GL_ACCUM_RED_BITS
#define SDL_PixelFormatEnumToMasks
void SDL_StopTextInput(void)
Stop receiving any text input events. This function will hide the on-screen keyboard if supported...
static int SDL_UpdateFullscreenMode(SDL_Window *window, SDL_bool fullscreen)
SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
static SDL_bool SDL_MessageboxValidForDriver(const SDL_MessageBoxData *messageboxdata, SDL_SYSWM_TYPE drivertype)
int SDL_GetDisplayBounds(int displayIndex, SDL_Rect *rect)
Get the desktop area represented by a display, with the primary display located at 0...
static int SDL_CreateWindowTexture(SDL_VideoDevice *unused, SDL_Window *window, Uint32 *format, void **pixels, int *pitch)
int SDL_AddBasicVideoDisplay(const SDL_DisplayMode *desktop_mode)
int framebuffer_srgb_capable
const SDL_MessageBoxButtonData * buttons
MessageBox structure containing title, text, window, etc.
#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR
SDL_bool(* HasScreenKeyboardSupport)(_THIS)
void SDL_MaximizeWindow(SDL_Window *window)
Make a window as large as possible.
static void SDL_DestroyWindowTexture(SDL_VideoDevice *unused, SDL_Window *window)
void SDL_OnApplicationWillResignActive(void)
void SDL_KeyboardQuit(void)
#define GL_ACCUM_GREEN_BITS
void SDL_RestoreWindow(SDL_Window *window)
Restore the size and position of a minimized or maximized window.
void SDL_StartTextInput(void)
Start accepting Unicode text input events. This function will show the on-screen keyboard if supporte...
static int SDL_SetDisplayModeForDisplay(SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
VideoBootStrap PSP_bootstrap
SDL_Window * fullscreen_window
void(* DestroyWindowFramebuffer)(_THIS, SDL_Window *window)
int SDL_GetNumVideoDisplays(void)
Returns the number of available video displays.
SDL_VideoDevice * SDL_GetVideoDevice(void)
void(* GL_UnloadLibrary)(_THIS)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
int share_with_current_context
int SDL_GetDisplayDPI(int displayIndex, float *ddpi, float *hdpi, float *vdpi)
Get the dots/pixels-per-inch for a display.
#define SDL_assert(condition)
void(* GetDisplayModes)(_THIS, SDL_VideoDisplay *display)
int(* ShowMessageBox)(_THIS, const SDL_MessageBoxData *messageboxdata, int *buttonid)
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
void(* SetWindowMaximumSize)(_THIS, SDL_Window *window)
VideoBootStrap RPI_bootstrap
int(* CreateSDLWindow)(_THIS, SDL_Window *window)
#define SDL_OutOfMemory()
SDL_DisplayMode desktop_mode
#define SDL_GetMouseFocus
struct SDL_VideoDevice::@34 vulkan_config
SDL_bool SDL_GetWindowWMInfo(SDL_Window *window, struct SDL_SysWMinfo *info)
This function allows access to driver-dependent window information.
SDL_bool SDL_IsTextInputActive(void)
Return whether or not Unicode text input events are enabled.
void * SDL_GetDisplayDriverData(int displayIndex)
void SDL_SetWindowBordered(SDL_Window *window, SDL_bool bordered)
Set the border state of a window.
Uint32 last_fullscreen_flags
int SDL_SetWindowModalFor(SDL_Window *modal_window, SDL_Window *parent_window)
Sets the window as a modal for another window (TODO: reconsider this function and/or its name) ...
VideoBootStrap DUMMY_bootstrap
Information on the capabilities of a render driver or context.
void SDL_SetWindowResizable(SDL_Window *window, SDL_bool resizable)
Set the user-resizable state of a window.
void SDL_SetWindowIcon(SDL_Window *window, SDL_Surface *icon)
Set the icon for a window.
SDL_Window * SDL_GetGrabbedWindow(void)
Get the window that currently has an input grab enabled.
int(* SetWindowOpacity)(_THIS, SDL_Window *window, float opacity)
SDL_bool SDL_Vulkan_CreateSurface(SDL_Window *window, VkInstance instance, VkSurfaceKHR *surface)
Create a Vulkan rendering surface for a window.
float SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches)
static SDL_bool ShouldUseTextureFramebuffer()
EGLSurface EGLNativeWindowType * window
#define SDL_DestroyTexture
void(* SetWindowPosition)(_THIS, SDL_Window *window)
void SDL_GetWindowMaximumSize(SDL_Window *window, int *max_w, int *max_h)
Get the maximum size of a window's client area.
#define GL_ACCUM_BLUE_BITS
int(* GL_SwapWindow)(_THIS, SDL_Window *window)
int SDL_VideoInit(const char *driver_name)
Initialize the video subsystem, optionally specifying a video driver.
void(* ShowScreenKeyboard)(_THIS, SDL_Window *window)
SDL_TLSID current_glctx_tls
SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char int SDL_PRINTF_FORMAT_STRING const char const char SDL_SCANF_FORMAT_STRING const char return SDL_ThreadFunction const char void return Uint32 return Uint32 void
The type used to identify a window.
void SDL_Vulkan_UnloadLibrary(void)
Unload the Vulkan loader library previously loaded by SDL_Vulkan_LoadLibrary().
int(* GetWindowGammaRamp)(_THIS, SDL_Window *window, Uint16 *ramp)
SDL_DisplayOrientation SDL_GetDisplayOrientation(int displayIndex)
Get the orientation of a display.
void SDL_ResetKeyboard(void)
#define SDL_HINT_FRAMEBUFFER_ACCELERATION
A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
int SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid)
Create a modal message box.
static void SDL_FinishWindowCreation(SDL_Window *window, Uint32 flags)
void(* MinimizeWindow)(_THIS, SDL_Window *window)
SDL_VideoDevice *(* create)(int devindex)
VideoBootStrap PND_bootstrap
int SDL_GL_SetAttribute(SDL_GLattr attr, int value)
Set an OpenGL window attribute before window creation.
SDL_GLContext SDL_GL_GetCurrentContext(void)
Get the currently active OpenGL context.
VideoBootStrap COCOA_bootstrap
#define SDL_HINT_RENDER_DRIVER
A variable specifying which render driver to use.
static int SDL_UninitializedVideo()
SDL_bool SDL_GL_ExtensionSupported(const char *extension)
Return true if an OpenGL extension is supported for the current context.
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr
int(* SetWindowInputFocus)(_THIS, SDL_Window *window)
static VideoBootStrap * bootstrap[]
void * SDL_GL_GetProcAddress(const char *proc)
Get the address of an OpenGL function.
Uint32 num_texture_formats
SDL_Window * grabbed_window
#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
int SDL_UpdateWindowSurface(SDL_Window *window)
Copy the window surface to the screen.
SDL_bool suspend_screensaver
int(* CreateSDLWindowFrom)(_THIS, SDL_Window *window, const void *data)
#define SDL_arraysize(array)
static SDL_DisplayMode * SDL_GetClosestDisplayModeForDisplay(SDL_VideoDisplay *display, const SDL_DisplayMode *mode, SDL_DisplayMode *closest)
void(* SetWindowFullscreen)(_THIS, SDL_Window *window, SDL_VideoDisplay *display, SDL_bool fullscreen)
int SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
Get the actual value for an attribute from the current context.
void * SDL_Vulkan_GetVkGetInstanceProcAddr(void)
Get the address of the vkGetInstanceProcAddr function.
void SDL_OnWindowHidden(SDL_Window *window)
int(* SetWindowModalFor)(_THIS, SDL_Window *modal_window, SDL_Window *parent_window)
#define SDL_CalculateGammaRamp
int SDL_GetWindowGammaRamp(SDL_Window *window, Uint16 *red, Uint16 *green, Uint16 *blue)
Get the gamma ramp for a window.
GLsizei const GLchar *const * path
VideoBootStrap UIKIT_bootstrap
#define SDL_WarpMouseInWindow
int(* UpdateWindowFramebuffer)(_THIS, SDL_Window *window, const SDL_Rect *rects, int numrects)
#define CHECK_DISPLAY_INDEX(displayIndex, retval)
void SDL_GL_SwapWindow(SDL_Window *window)
Swap the OpenGL buffers for a window, if double-buffering is supported.
#define SDL_DestroyRenderer
#define SDL_EnclosePoints
static SDL_INLINE void PrepareDragAndDropSupport(SDL_Window *window)
int SDL_RecreateWindow(SDL_Window *window, Uint32 flags)
int SDL_SendAppEvent(SDL_EventType eventType)
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
#define SDL_ISPIXELFORMAT_FOURCC(format)
#define CHECK_WINDOW_MAGIC(window, retval)
void(* GL_DefaultProfileConfig)(_THIS, int *mask, int *major, int *minor)
int SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window)
Create a simple modal message box.
void(* SetWindowTitle)(_THIS, SDL_Window *window)
int SDL_Vulkan_LoadLibrary(const char *path)
Dynamically load a Vulkan loader library.
EGLSurface EGLint * rects
void(* SetWindowResizable)(_THIS, SDL_Window *window, SDL_bool resizable)
int(* GetDisplayUsableBounds)(_THIS, SDL_VideoDisplay *display, SDL_Rect *rect)
int(* GL_GetSwapInterval)(_THIS)
void(* MaximizeWindow)(_THIS, SDL_Window *window)
void SDL_OnWindowFocusLost(SDL_Window *window)
int SDL_GetWindowDisplayIndex(SDL_Window *window)
Get the display index associated with a window.
GLboolean GLboolean GLboolean GLboolean a
int(* SetWindowGammaRamp)(_THIS, SDL_Window *window, const Uint16 *ramp)
SDL_Window * SDL_GL_GetCurrentWindow(void)
Get the currently active OpenGL window.
void SDL_EnableScreenSaver()
Allow the screen to be blanked by a screensaver.
static SDL_bool ShouldMinimizeOnFocusLoss(SDL_Window *window)
Uint32 SDL_GetWindowID(SDL_Window *window)
Get the numeric ID of a window, for logging purposes.
void(* OnWindowEnter)(_THIS, SDL_Window *window)
void(* SuspendScreenSaver)(_THIS)
GLboolean GLboolean GLboolean b
SDL_bool SDL_HasScreenKeyboardSupport(void)
Returns whether the platform has some screen keyboard support.
SDL_Window * current_glwin
void(* SetWindowGrab)(_THIS, SDL_Window *window, SDL_bool grabbed)
#define SDL_BITSPERPIXEL(X)
#define SDL_Unsupported()
#define SDL_GetMouseState
int(* CreateWindowFramebuffer)(_THIS, SDL_Window *window, Uint32 *format, void **pixels, int *pitch)
void *(* GL_GetProcAddress)(_THIS, const char *proc)
SDL_WindowUserData * data
void SDL_SetWindowPosition(SDL_Window *window, int x, int y)
Set the position of a window.
#define SDL_CreateRenderer
void SDL_OnWindowResized(SDL_Window *window)
A rectangle, with the origin at the upper left.
#define SDL_GetRendererInfo
SDL_bool SDL_GetSpanEnclosingRect(int width, int height, int numrects, const SDL_Rect *rects, SDL_Rect *span)
#define SDL_RenderPresent
void SDL_DisableScreenSaver()
Prevent the screen from being blanked by a screensaver.
SDL_bool SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, unsigned *count, const char **names)
int SDL_SetWindowFullscreen(SDL_Window *window, Uint32 flags)
Set a window's fullscreen state.
void SDL_SetTextInputRect(SDL_Rect *rect)
Set the rectangle used to type Unicode text inputs. This is used as a hint for IME and on-screen keyb...
SDL_DisplayOrientation orientation
int SDL_GetNumDisplayModes(int displayIndex)
Returns the number of available display modes.
static SDL_Surface * SDL_CreateWindowFramebuffer(SDL_Window *window)
void(* HideScreenKeyboard)(_THIS, SDL_Window *window)
void(* AcceptDragAndDrop)(SDL_Window *window, SDL_bool accept)
void SDL_GetWindowMinimumSize(SDL_Window *window, int *min_w, int *min_h)
Get the minimum size of a window's client area.
int SDL_GetWindowBordersSize(SDL_Window *window, int *top, int *left, int *bottom, int *right)
Get the size of a window's borders (decorations) around the client area.
#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE