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 49 #ifndef GL_CONTEXT_RELEASE_BEHAVIOR_KHR 50 #define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB 59 #include <emscripten.h> 64 #if SDL_VIDEO_DRIVER_COCOA 67 #if SDL_VIDEO_DRIVER_X11 70 #if SDL_VIDEO_DRIVER_MIR 73 #if SDL_VIDEO_DRIVER_WAYLAND 76 #if SDL_VIDEO_DRIVER_VIVANTE 79 #if SDL_VIDEO_DRIVER_DIRECTFB 82 #if SDL_VIDEO_DRIVER_WINDOWS 85 #if SDL_VIDEO_DRIVER_WINRT 88 #if SDL_VIDEO_DRIVER_HAIKU 91 #if SDL_VIDEO_DRIVER_PANDORA 94 #if SDL_VIDEO_DRIVER_UIKIT 97 #if SDL_VIDEO_DRIVER_ANDROID 100 #if SDL_VIDEO_DRIVER_PSP 103 #if SDL_VIDEO_DRIVER_RPI 106 #if SDL_VIDEO_DRIVER_NACL 109 #if SDL_VIDEO_DRIVER_EMSCRIPTEN 110 &Emscripten_bootstrap,
112 #if SDL_VIDEO_DRIVER_DUMMY 120 #define CHECK_WINDOW_MAGIC(window, retval) \ 122 SDL_UninitializedVideo(); \ 125 if (!window || window->magic != &_this->window_magic) { \ 126 SDL_SetError("Invalid window"); \ 130 #define CHECK_DISPLAY_INDEX(displayIndex, retval) \ 132 SDL_UninitializedVideo(); \ 135 SDL_assert(_this->displays != NULL); \ 136 if (displayIndex < 0 || displayIndex >= _this->num_displays) { \ 137 SDL_SetError("displayIndex must be in the range 0 - %d", \ 138 _this->num_displays - 1); \ 142 #define FULLSCREEN_MASK (SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_FULLSCREEN) 153 #define SDL_WINDOWTEXTUREDATA "_SDL_WindowTextureData" 192 #if defined(__WIN32__) 197 #elif defined(__MACOSX__) 201 #elif defined(__LINUX__) 215 const char *vendor =
NULL;
218 if (glGetStringFunc) {
219 vendor = (
const char *) glGetStringFunc(
GL_VENDOR);
231 return hasAcceleratedOpenGL;
233 #elif SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 260 if (hint && *hint !=
'0' && *hint !=
'1' &&
287 return SDL_SetError(
"No hardware accelerated renderers available");
331 window->
w, window->
h);
345 *pitch = data->
pitch;
410 }
else if (a->
w != b->
w) {
412 }
else if (a->
h != b->
h) {
427 return SDL_SetError(
"Video subsystem has not been initialized");
460 #if !SDL_TIMERS_DISABLED 475 if (driver_name ==
NULL) {
478 if (driver_name !=
NULL) {
479 for (i = 0; bootstrap[
i]; ++
i) {
481 if (bootstrap[i]->available()) {
482 video = bootstrap[
i]->
create(index);
488 for (i = 0; bootstrap[
i]; ++
i) {
489 if (bootstrap[i]->available()) {
490 video = bootstrap[
i]->
create(index);
525 return SDL_SetError(
"The video driver did not add any displays");
601 displays[
index] = *display;
634 for (displayIndex = 0; displayIndex < _this->
num_displays; ++displayIndex) {
635 if (display == &_this->
displays[displayIndex]) {
675 if (displayIndex == 0) {
714 display = &_this->
displays[displayIndex];
717 if (_this->
GetDisplayDPI(_this, display, ddpi, hdpi, vdpi) == 0) {
736 for (i = 0; i < nmodes; ++
i) {
737 if (
cmpmodes(mode, &modes[i]) == 0) {
753 modes[nmodes] = *
mode;
789 display = &_this->
displays[displayIndex];
791 return SDL_SetError(
"index must be in the range of 0 - %d",
807 display = &_this->
displays[displayIndex];
821 display = &_this->
displays[displayIndex];
834 int target_refresh_rate;
838 if (!mode || !closest) {
839 SDL_SetError(
"Missing desired mode or closest mode parameter");
845 target_format = mode->
format;
861 if (current->
w && (current->
w < mode->
w)) {
865 if (current->
h && (current->
h < mode->
h)) {
866 if (current->
w && (current->
w == mode->
w)) {
875 if (!match || current->
w < match->
w || current->
h < match->
h) {
881 if (current->
format == target_format ||
903 if (match->
w && match->
h) {
904 closest->
w = match->
w;
905 closest->
h = match->
h;
907 closest->
w = mode->
w;
908 closest->
h = mode->
h;
944 display = &_this->
displays[displayIndex];
955 display_mode = *
mode;
958 if (!display_mode.
format) {
961 if (!display_mode.
w) {
964 if (!display_mode.
h) {
973 return SDL_SetError(
"No video mode large enough for %dx%d",
974 display_mode.
w, display_mode.
h);
982 if (
SDL_memcmp(&display_mode, ¤t_mode,
sizeof(display_mode)) == 0) {
988 return SDL_SetError(
"Video driver doesn't support changing display mode");
1003 int closest_dist = 0x7FFFFFFF;
1012 displayIndex = (window->
x & 0xFFFF);
1016 return displayIndex;
1020 displayIndex = (window->
y & 0xFFFF);
1024 return displayIndex;
1035 center.
x = window->
x + window->
w / 2;
1036 center.
y = window->
y + window->
h / 2;
1043 delta.
x = center.
x - (rect.
x + rect.
w / 2);
1044 delta.
y = center.
y - (rect.
y + rect.
h / 2);
1045 dist = (delta.
x*delta.
x + delta.
y*delta.
y);
1046 if (dist < closest_dist) {
1048 closest_dist = dist;
1061 if (displayIndex >= 0) {
1062 return &_this->
displays[displayIndex];
1101 if (!fullscreen_mode.
w) {
1104 if (!fullscreen_mode.
h) {
1115 &fullscreen_mode)) {
1116 return SDL_SetError(
"Couldn't find display mode match");
1120 *mode = fullscreen_mode;
1172 if (!Cocoa_SetWindowFullscreenSpace(window,
SDL_FALSE)) {
1183 if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) {
1184 if (Cocoa_IsWindowInFullscreenSpace(window) != fullscreen) {
1190 #elif __WINRT__ && (NTDDI_VERSION < NTDDI_WIN10) 1234 for (other = _this->
windows; other; other = other->
next) {
1237 if (other == window) {
1238 setDisplayMode = fullscreen;
1244 if (setDisplayMode) {
1252 if (other->
w == fullscreen_mode.
w && other->
h == fullscreen_mode.
h) {
1275 fullscreen_mode.
w, fullscreen_mode.
h);
1306 #define CREATE_FLAGS \ 1307 (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) 1355 if ((w > 16384) || (h > 16384)) {
1361 #if (SDL_VIDEO_OPENGL && __MACOSX__) || __IPHONEOS__ || __ANDROID__ || __NACL__ 1381 flags &= ~SDL_WINDOW_ALLOW_HIGHDPI;
1405 window->
x = bounds.
x + (bounds.
w -
w) / 2;
1408 window->
y = bounds.
y + (bounds.
h -
h) / 2;
1424 window->
x = bounds.
x;
1425 window->
y = bounds.
y;
1426 window->
w = bounds.
w;
1427 window->
h = bounds.
h;
1447 #if __WINRT__ && (NTDDI_VERSION < NTDDI_WIN10) 1456 flags = window->
flags;
1514 return SDL_SetError(
"No OpenGL support in video driver");
1540 if ((window->
flags & SDL_WINDOW_OPENGL) != (flags & SDL_WINDOW_OPENGL)) {
1541 if (flags & SDL_WINDOW_OPENGL) {
1555 if (_this->
CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) {
1557 if (loaded_opengl) {
1559 window->
flags &= ~SDL_WINDOW_OPENGL;
1565 if (flags & SDL_WINDOW_FOREIGN) {
1602 for (window = _this->
windows; window; window = window->
next) {
1603 if (window->
id ==
id) {
1615 return window->
flags;
1623 if (title == window->
title) {
1656 if (!window->
icon) {
1673 if (name ==
NULL || name[0] ==
'\0') {
1680 for (data = window->
data; data; prev = data, data = data->
next) {
1682 void *last_value = data->
data;
1686 data->
data = userdata;
1705 data->
data = userdata;
1720 if (name ==
NULL || name[0] ==
'\0') {
1725 for (data = window->
data; data; data = data->
next) {
1739 int displayIndex = (x & 0xFFFF);
1749 x = bounds.
x + (bounds.
w - window->
w) / 2;
1752 y = bounds.
y + (bounds.
h - window->
h) / 2;
1797 if (displayIndex >= 0) {
1825 const int want = (bordered !=
SDL_FALSE);
1843 const int want = (resizable !=
SDL_FALSE);
1901 if (window->
w == w && window->
h == h) {
1934 window->
min_w = min_w;
1935 window->
min_h = min_h;
1949 if (!top) { top = &dummy; }
1950 if (!left) { left = &dummy; }
1951 if (!right) { right = &dummy; }
1952 if (!bottom) { bottom = &dummy; }
1955 *top = *left = *bottom = *right = 0;
1971 *min_w = window->
min_w;
1974 *min_h = window->
min_h;
1992 window->
max_w = max_w;
1993 window->
max_h = max_h;
2007 *max_w = window->
max_w;
2010 *max_h = window->
max_h;
2129 window->
flags |= oldflags;
2140 Uint32 Rmask, Gmask, Bmask, Amask;
2185 full_rect.
w = window->
w;
2186 full_rect.
h = window->
h;
2197 return SDL_SetError(
"Window surface is invalid, please call SDL_GetWindowSurface() to get a new surface");
2237 if (opacity < 0.0
f) {
2239 }
else if (opacity > 1.0
f) {
2257 *out_opacity = window->
opacity;
2300 if (!window->
gamma) {
2330 if (!window->
gamma) {
2334 if (!window->
gamma) {
2345 for (i = 0; i < 256; ++
i) {
2382 if (grabbed_window && (grabbed_window != window)) {
2390 }
else if (grabbed_window == window) {
2509 if (Cocoa_IsWindowInFullscreenSpace(window)) {
2541 for (window = _this->
windows; window; window = window->
next) {
2602 while (window->
data) {
2727 return SDL_SetError(
"No dynamic GL support in video driver");
2783 return (verstr && (
SDL_atoi(verstr) >= 3));
2789 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 2791 const char *extensions;
2793 const char *where, *terminator;
2797 if (where || *extension ==
'\0') {
2802 if (start && *start ==
'0') {
2809 if (!glGetStringFunc) {
2821 if ((!glGetStringiFunc) || (!glGetIntegervFunc)) {
2825 #ifndef GL_NUM_EXTENSIONS 2826 #define GL_NUM_EXTENSIONS 0x821D 2829 for (i = 0; i < num_exts; i++) {
2830 const char *thisext = (
const char *) glGetStringiFunc(
GL_EXTENSIONS, i);
2858 if (where == start || *(where - 1) ==
' ')
2859 if (*terminator ==
' ' || *terminator ==
'\0')
2895 #if SDL_VIDEO_OPENGL 2898 #elif SDL_VIDEO_OPENGL_ES2 2902 #elif SDL_VIDEO_OPENGL_ES 2917 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 2995 retval =
SDL_SetError(
"Unknown OpenGL context flag %d", value);
3005 retval =
SDL_SetError(
"Unknown OpenGL context profile %d", value);
3032 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2 3043 #if SDL_VIDEO_OPENGL 3047 GLenum attachmentattrib = 0;
3055 #if SDL_VIDEO_OPENGL 3061 #if SDL_VIDEO_OPENGL 3067 #if SDL_VIDEO_OPENGL 3073 #if SDL_VIDEO_OPENGL 3079 #if SDL_VIDEO_OPENGL 3090 #if SDL_VIDEO_OPENGL 3097 #if SDL_VIDEO_OPENGL 3103 #if SDL_VIDEO_OPENGL 3136 #if SDL_VIDEO_OPENGL 3144 int rsize = 0, gsize = 0, bsize = 0, asize = 0;
3160 *value = rsize + gsize + bsize + asize;
3219 #if SDL_VIDEO_OPENGL 3221 if (!glGetStringFunc) {
3222 return SDL_SetError(
"Failed getting OpenGL glGetString entry point");
3226 glGetFramebufferAttachmentParameterivFunc =
SDL_GL_GetProcAddress(
"glGetFramebufferAttachmentParameteriv");
3228 if (glGetFramebufferAttachmentParameterivFunc) {
3229 glGetFramebufferAttachmentParameterivFunc(
GL_FRAMEBUFFER, attachment, attachmentattrib, (
GLint *) value);
3231 return SDL_SetError(
"Failed getting OpenGL glGetFramebufferAttachmentParameteriv entry point");
3238 if (glGetIntegervFunc) {
3239 glGetIntegervFunc(attrib, (
GLint *) value);
3241 return SDL_SetError(
"Failed getting OpenGL glGetIntegerv entry point");
3246 if (!glGetErrorFunc) {
3247 return SDL_SetError(
"Failed getting OpenGL glGetError entry point");
3250 error = glGetErrorFunc();
3272 SDL_SetError(
"The specified window isn't an OpenGL window");
3305 return SDL_SetError(
"The specified window isn't an OpenGL window");
3356 return SDL_SetError(
"No OpenGL context has been made current");
3360 return SDL_SetError(
"Setting the swap interval is not supported");
3384 SDL_SetError(
"The specified window isn't an OpenGL window");
3389 SDL_SetError(
"The specified window has not been made current");
3399 if (!_this || !context) {
3420 #define SET_MASKBIT(icon, x, y, mask) \ 3421 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8))) 3423 colorkey = icon->
format->colorkey;
3428 for (y = 0; y < icon->
h; ++
y) {
3430 for (x = 0; x < icon->
w; ++
x) {
3431 if (*pixels++ == colorkey) {
3432 SET_MASKBIT(icon, x, y,
mask);
3442 for (y = 0; y < icon->
h; ++
y) {
3444 for (x = 0; x < icon->
w; ++
x) {
3445 if ((flags & 1) && *pixels == colorkey) {
3446 SET_MASKBIT(icon, x, y,
mask);
3447 }
else if ((flags & 2)
3449 SET_MASKBIT(icon, x, y,
mask);
3460 for (y = 0; y < icon->
h; ++
y) {
3462 for (x = 0; x < icon->
w; ++
x) {
3463 if ((flags & 1) && *pixels == colorkey) {
3464 SET_MASKBIT(icon, x, y,
mask);
3465 }
else if ((flags & 2)
3467 SET_MASKBIT(icon, x, y,
mask);
3483 if (icon && _this->SetIcon) {
3486 int mask_len = icon->
h * (icon->
w + 7) / 8;
3493 if (icon->
flags & SDL_SRCCOLORKEY)
3495 if (icon->
flags & SDL_SRCALPHA)
3498 CreateMaskFromColorKeyOrAlpha(icon, mask, flags);
3500 _this->SetIcon(_this, icon, mask);
3503 _this->SetIcon(_this, icon, mask);
3601 #if SDL_VIDEO_DRIVER_ANDROID 3604 #if SDL_VIDEO_DRIVER_WINDOWS 3607 #if SDL_VIDEO_DRIVER_WINRT 3610 #if SDL_VIDEO_DRIVER_COCOA 3613 #if SDL_VIDEO_DRIVER_UIKIT 3616 #if SDL_VIDEO_DRIVER_X11 3644 int show_cursor_prev;
3648 if (!messageboxdata) {
3661 buttonid = &dummybutton;
3669 #if SDL_VIDEO_DRIVER_ANDROID 3671 Android_ShowMessageBox(messageboxdata, buttonid) == 0) {
3675 #if SDL_VIDEO_DRIVER_WINDOWS 3678 WIN_ShowMessageBox(messageboxdata, buttonid) == 0) {
3682 #if SDL_VIDEO_DRIVER_WINRT 3685 WINRT_ShowMessageBox(messageboxdata, buttonid) == 0) {
3689 #if SDL_VIDEO_DRIVER_COCOA 3692 Cocoa_ShowMessageBox(messageboxdata, buttonid) == 0) {
3696 #if SDL_VIDEO_DRIVER_UIKIT 3699 UIKit_ShowMessageBox(messageboxdata, buttonid) == 0) {
3703 #if SDL_VIDEO_DRIVER_X11 3706 X11_ShowMessageBox(messageboxdata, buttonid) == 0) {
3714 if (current_window) {
3716 if (mouse_captured) {
3730 #ifdef __EMSCRIPTEN__ 3736 alert(UTF8ToString($0) +
"\n\n" + UTF8ToString($1));
3785 float den2 = hinches * hinches + vinches * vinches;
3786 if ( den2 <= 0.0
f ) {
3790 return (
float)(
SDL_sqrt((
double)hpix * (
double)hpix + (
double)vpix * (
double)vpix) /
#define SDL_CreateTexture
#define SDL_WINDOWPOS_ISUNDEFINED(X)
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
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
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)
void(* RestoreWindow)(_THIS, SDL_Window *window)
#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR
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)
GLuint GLsizei const GLchar * message
void SDL_VideoQuit(void)
Shuts down the video subsystem.
static SDL_UNUSED SDL_bool SDL_MessageboxValidForDriver(const SDL_MessageBoxData *messageboxdata, SDL_SYSWM_TYPE drivertype)
#define FULLSCREEN_VISIBLE(W)
GLint GLint GLint GLint GLint x
SDL_bool(* IsScreenKeyboardShown)(_THIS, SDL_Window *window)
SDL_bool SDL_IsScreenKeyboardShown(SDL_Window *window)
Returns whether the screen keyboard is shown for given window.
int SDL_GetDisplayMode(int displayIndex, int index, SDL_DisplayMode *mode)
Fill in information about a specific display mode.
int(* CreateWindowFrom)(_THIS, SDL_Window *window, const void *data)
void SDL_ShowWindow(SDL_Window *window)
Show a window.
SDL_TLSID current_glwin_tls
static SDL_Window * 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...
#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).
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
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]
The structure that defines a display mode.
int SDL_SetWindowInputFocus(SDL_Window *window)
Explicitly sets input focus to the window.
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.
#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
GLint GLint GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
int(* GetWindowBordersSize)(_THIS, SDL_Window *window, int *top, int *left, int *bottom, int *right)
void SDL_SetWindowMinimumSize(SDL_Window *window, int min_w, int min_h)
Set the minimum size of a window's client area.
GLuint const GLchar * name
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)
void SDL_SetMouseFocus(SDL_Window *window)
void(* GL_SwapWindow)(_THIS, 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
uint32_t Uint32
An unsigned 32-bit integer type.
#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
#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.
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)
#define SDL_VERSION(x)
Macro to determine SDL version program was compiled against.
Uint32 SDL_GetWindowFlags(SDL_Window *window)
Get the window flags.
static SDL_VideoDevice * _this
int SDL_SetWindowOpacity(SDL_Window *window, float opacity)
Set the opacity for a window.
SDL_GLattr
OpenGL configuration attributes.
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
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)
void * SDL_calloc(size_t nmemb, size_t size)
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.
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
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)
GLint GLint GLint GLint GLint GLint y
static int cmpmodes(const void *A, const void *B)
GLsizei const GLfloat * value
#define SDL_WINDOWTEXTUREDATA
static SDL_Renderer * renderer
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
uint8_t Uint8
An unsigned 8-bit integer type.
void SDL_SetWindowMaximumSize(SDL_Window *window, int max_w, int max_h)
Set the maximum size of a window's client area.
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...
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().
#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
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(* 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.
#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)
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.
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_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)
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)
#define SDL_OutOfMemory()
SDL_DisplayMode desktop_mode
#define SDL_GetMouseFocus
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) ...
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.
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
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)
float SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches)
static SDL_bool ShouldUseTextureFramebuffer()
#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 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
int(* CreateWindow)(_THIS, SDL_Window *window)
The type used to identify a window.
int(* GetWindowGammaRamp)(_THIS, SDL_Window *window, Uint16 *ramp)
void SDL_ResetKeyboard(void)
SDL_Rect rects[MAX_RECTS]
#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)
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.
#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.
int(* SetWindowInputFocus)(_THIS, SDL_Window *window)
static VideoBootStrap * bootstrap[]
struct SDL_VideoDevice::@28 gl_config
void * SDL_GL_GetProcAddress(const char *proc)
Get the address of an OpenGL function.
uint16_t Uint16
An unsigned 16-bit integer type.
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
#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_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
GLubyte GLubyte GLubyte GLubyte w
#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
int SDL_RecreateWindow(SDL_Window *window, Uint32 flags)
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
#define SDL_ISPIXELFORMAT_FOURCC(format)
#define CHECK_WINDOW_MAGIC(window, retval)
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)
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.
static int SDL_GetIndexOfDisplay(SDL_VideoDisplay *display)
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)
GLfloat GLfloat GLfloat GLfloat h
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.
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...
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 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