SDL  2.0
SDL_sysvideo.h File Reference
#include "../SDL_internal.h"
#include "SDL_messagebox.h"
#include "SDL_shape.h"
#include "SDL_thread.h"
+ Include dependency graph for SDL_sysvideo.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SDL_WindowShaper
 
struct  SDL_ShapeDriver
 
struct  SDL_WindowUserData
 
struct  SDL_Window
 The type used to identify a window. More...
 
struct  SDL_VideoDisplay
 
struct  SDL_VideoDevice
 
struct  VideoBootStrap
 

Macros

#define FULLSCREEN_VISIBLE(W)
 
#define _THIS   SDL_VideoDevice *_this
 

Functions

SDL_VideoDeviceSDL_GetVideoDevice (void)
 
int SDL_AddBasicVideoDisplay (const SDL_DisplayMode *desktop_mode)
 
int SDL_AddVideoDisplay (const SDL_VideoDisplay *display)
 
SDL_bool SDL_AddDisplayMode (SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
 
SDL_VideoDisplaySDL_GetDisplayForWindow (SDL_Window *window)
 
voidSDL_GetDisplayDriverData (int displayIndex)
 
int SDL_RecreateWindow (SDL_Window *window, Uint32 flags)
 
void SDL_OnWindowShown (SDL_Window *window)
 
void SDL_OnWindowHidden (SDL_Window *window)
 
void SDL_OnWindowResized (SDL_Window *window)
 
void SDL_OnWindowMinimized (SDL_Window *window)
 
void SDL_OnWindowRestored (SDL_Window *window)
 
void SDL_OnWindowEnter (SDL_Window *window)
 
void SDL_OnWindowLeave (SDL_Window *window)
 
void SDL_OnWindowFocusGained (SDL_Window *window)
 
void SDL_OnWindowFocusLost (SDL_Window *window)
 
void SDL_UpdateWindowGrab (SDL_Window *window)
 
SDL_WindowSDL_GetFocusWindow (void)
 
SDL_bool SDL_ShouldAllowTopmost (void)
 
float SDL_ComputeDiagonalDPI (int hpix, int vpix, float hinches, float vinches)
 

Macro Definition Documentation

◆ _THIS

#define _THIS   SDL_VideoDevice *_this

Definition at line 143 of file SDL_sysvideo.h.

◆ FULLSCREEN_VISIBLE

#define FULLSCREEN_VISIBLE (   W)
Value:
((W)->flags & SDL_WINDOW_SHOWN) && \
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 *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld [DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld W[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro fetch_mask_pixblock pixld mask_basereg pixblock_size MASK endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp local skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub
GLbitfield flags

Definition at line 114 of file SDL_sysvideo.h.

Referenced by SDL_CreateWindow(), SDL_OnWindowRestored(), SDL_SetWindowDisplayMode(), SDL_SetWindowFullscreen(), SDL_SetWindowSize(), and SDL_UpdateFullscreenMode().

Function Documentation

◆ SDL_AddBasicVideoDisplay()

int SDL_AddBasicVideoDisplay ( const SDL_DisplayMode desktop_mode)

Definition at line 577 of file SDL_video.c.

References SDL_VideoDisplay::current_mode, SDL_VideoDisplay::desktop_mode, SDL_AddVideoDisplay(), and SDL_zero.

578 {
579  SDL_VideoDisplay display;
580 
581  SDL_zero(display);
582  if (desktop_mode) {
583  display.desktop_mode = *desktop_mode;
584  }
585  display.current_mode = display.desktop_mode;
586 
587  return SDL_AddVideoDisplay(&display);
588 }
SDL_DisplayMode current_mode
Definition: SDL_sysvideo.h:130
#define SDL_zero(x)
Definition: SDL_stdinc.h:359
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
Definition: SDL_video.c:591
SDL_DisplayMode desktop_mode
Definition: SDL_sysvideo.h:129

◆ SDL_AddDisplayMode()

SDL_bool SDL_AddDisplayMode ( SDL_VideoDisplay display,
const SDL_DisplayMode mode 
)

Definition at line 728 of file SDL_video.c.

References cmpmodes(), SDL_VideoDisplay::display_modes, i, SDL_VideoDisplay::max_display_modes, SDL_VideoDisplay::num_display_modes, SDL_FALSE, SDL_qsort, SDL_realloc, and SDL_TRUE.

729 {
730  SDL_DisplayMode *modes;
731  int i, nmodes;
732 
733  /* Make sure we don't already have the mode in the list */
734  modes = display->display_modes;
735  nmodes = display->num_display_modes;
736  for (i = 0; i < nmodes; ++i) {
737  if (cmpmodes(mode, &modes[i]) == 0) {
738  return SDL_FALSE;
739  }
740  }
741 
742  /* Go ahead and add the new mode */
743  if (nmodes == display->max_display_modes) {
744  modes =
745  SDL_realloc(modes,
746  (display->max_display_modes + 32) * sizeof(*modes));
747  if (!modes) {
748  return SDL_FALSE;
749  }
750  display->display_modes = modes;
751  display->max_display_modes += 32;
752  }
753  modes[nmodes] = *mode;
754  display->num_display_modes++;
755 
756  /* Re-sort video modes */
757  SDL_qsort(display->display_modes, display->num_display_modes,
758  sizeof(SDL_DisplayMode), cmpmodes);
759 
760  return SDL_TRUE;
761 }
#define SDL_qsort
The structure that defines a display mode.
Definition: SDL_video.h:53
#define SDL_realloc
static int cmpmodes(const void *A, const void *B)
Definition: SDL_video.c:404
SDL_DisplayMode * display_modes
Definition: SDL_sysvideo.h:128
GLenum mode
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)
Definition: SDL_x11sym.h:50

◆ SDL_AddVideoDisplay()

int SDL_AddVideoDisplay ( const SDL_VideoDisplay display)

Definition at line 591 of file SDL_video.c.

References _this, SDL_VideoDisplay::device, SDL_VideoDevice::displays, SDL_VideoDisplay::name, SDL_VideoDevice::num_displays, SDL_itoa, SDL_OutOfMemory, SDL_realloc, and SDL_strdup.

Referenced by SDL_AddBasicVideoDisplay().

592 {
593  SDL_VideoDisplay *displays;
594  int index = -1;
595 
596  displays =
598  (_this->num_displays + 1) * sizeof(*displays));
599  if (displays) {
600  index = _this->num_displays++;
601  displays[index] = *display;
602  displays[index].device = _this;
603  _this->displays = displays;
604 
605  if (display->name) {
606  displays[index].name = SDL_strdup(display->name);
607  } else {
608  char name[32];
609 
610  SDL_itoa(index, name, 10);
611  displays[index].name = SDL_strdup(name);
612  }
613  } else {
614  SDL_OutOfMemory();
615  }
616  return index;
617 }
#define SDL_itoa
GLuint const GLchar * name
#define SDL_realloc
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
SDL_VideoDevice * device
Definition: SDL_sysvideo.h:134
SDL_VideoDisplay * displays
Definition: SDL_sysvideo.h:293
GLuint index
#define SDL_OutOfMemory()
Definition: SDL_error.h:52
#define SDL_strdup

◆ SDL_ComputeDiagonalDPI()

float SDL_ComputeDiagonalDPI ( int  hpix,
int  vpix,
float  hinches,
float  vinches 
)

Definition at line 3783 of file SDL_video.c.

References SDL_sqrt.

3784 {
3785  float den2 = hinches * hinches + vinches * vinches;
3786  if ( den2 <= 0.0f ) {
3787  return 0.0f;
3788  }
3789 
3790  return (float)(SDL_sqrt((double)hpix * (double)hpix + (double)vpix * (double)vpix) /
3791  SDL_sqrt((double)den2));
3792 }
GLfloat f
#define SDL_sqrt

◆ SDL_GetDisplayDriverData()

void* SDL_GetDisplayDriverData ( int  displayIndex)

Definition at line 645 of file SDL_video.c.

References CHECK_DISPLAY_INDEX, SDL_VideoDevice::displays, SDL_VideoDisplay::driverdata, and NULL.

646 {
647  CHECK_DISPLAY_INDEX(displayIndex, NULL);
648 
649  return _this->displays[displayIndex].driverdata;
650 }
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
SDL_VideoDisplay * displays
Definition: SDL_sysvideo.h:293
#define NULL
Definition: begin_code.h:143
#define CHECK_DISPLAY_INDEX(displayIndex, retval)
Definition: SDL_video.c:130

◆ SDL_GetDisplayForWindow()

SDL_VideoDisplay* SDL_GetDisplayForWindow ( SDL_Window window)

Definition at line 1058 of file SDL_video.c.

References SDL_VideoDevice::displays, NULL, and SDL_GetWindowDisplayIndex().

Referenced by SDL_CreateWindow(), SDL_DestroyWindow(), SDL_GetWindowDisplayMode(), SDL_GetWindowPixelFormat(), SDL_SetWindowDisplayMode(), and SDL_UpdateFullscreenMode().

1059 {
1060  int displayIndex = SDL_GetWindowDisplayIndex(window);
1061  if (displayIndex >= 0) {
1062  return &_this->displays[displayIndex];
1063  } else {
1064  return NULL;
1065  }
1066 }
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
SDL_VideoDisplay * displays
Definition: SDL_sysvideo.h:293
#define NULL
Definition: begin_code.h:143
int SDL_GetWindowDisplayIndex(SDL_Window *window)
Get the display index associated with a window.
Definition: SDL_video.c:998

◆ SDL_GetFocusWindow()

SDL_Window* SDL_GetFocusWindow ( void  )

Definition at line 2534 of file SDL_video.c.

References SDL_Window::flags, SDL_Window::next, NULL, SDL_WINDOW_INPUT_FOCUS, window, and SDL_VideoDevice::windows.

Referenced by SDL_PromptAssertion(), SDL_StartTextInput(), and SDL_StopTextInput().

2535 {
2536  SDL_Window *window;
2537 
2538  if (!_this) {
2539  return NULL;
2540  }
2541  for (window = _this->windows; window; window = window->next) {
2542  if (window->flags & SDL_WINDOW_INPUT_FOCUS) {
2543  return window;
2544  }
2545  }
2546  return NULL;
2547 }
SDL_Window * next
Definition: SDL_sysvideo.h:112
static SDL_Window * window
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
SDL_Window * windows
Definition: SDL_sysvideo.h:294
#define NULL
Definition: begin_code.h:143
The type used to identify a window.
Definition: SDL_sysvideo.h:71
Uint32 flags
Definition: SDL_sysvideo.h:81

◆ SDL_GetVideoDevice()

SDL_VideoDevice* SDL_GetVideoDevice ( void  )

Definition at line 571 of file SDL_video.c.

References _this.

Referenced by SDL_CreateShapedWindow(), SDL_GetClipboardText(), SDL_HasClipboardText(), SDL_PumpEvents(), SDL_SetClipboardText(), SDL_SetKeyboardFocus(), and SDL_SetWindowShape().

572 {
573  return _this;
574 }
static SDL_VideoDevice * _this
Definition: SDL_video.c:118

◆ SDL_OnWindowEnter()

void SDL_OnWindowEnter ( SDL_Window window)

Definition at line 2472 of file SDL_video.c.

References SDL_VideoDevice::OnWindowEnter.

Referenced by SDL_SendWindowEvent().

2473 {
2474  if (_this->OnWindowEnter) {
2475  _this->OnWindowEnter(_this, window);
2476  }
2477 }
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
void(* OnWindowEnter)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:231

◆ SDL_OnWindowFocusGained()

void SDL_OnWindowFocusGained ( SDL_Window window)

Definition at line 2485 of file SDL_video.c.

References SDL_Window::gamma, SDL_Window::h, SDL_Mouse::relative_mode, SDL_GetMouse(), SDL_SetMouseFocus(), SDL_UpdateWindowGrab(), SDL_WarpMouseInWindow, SDL_VideoDevice::SetWindowGammaRamp, and SDL_Window::w.

Referenced by SDL_SendWindowEvent().

2486 {
2487  SDL_Mouse *mouse = SDL_GetMouse();
2488 
2489  if (window->gamma && _this->SetWindowGammaRamp) {
2490  _this->SetWindowGammaRamp(_this, window, window->gamma);
2491  }
2492 
2493  if (mouse && mouse->relative_mode) {
2494  SDL_SetMouseFocus(window);
2495  SDL_WarpMouseInWindow(window, window->w/2, window->h/2);
2496  }
2497 
2498  SDL_UpdateWindowGrab(window);
2499 }
SDL_Mouse * SDL_GetMouse(void)
Definition: SDL_mouse.c:66
void SDL_SetMouseFocus(SDL_Window *window)
Definition: SDL_mouse.c:103
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
SDL_bool relative_mode
Definition: SDL_mouse_c.h:84
void SDL_UpdateWindowGrab(SDL_Window *window)
Definition: SDL_video.c:2369
#define SDL_WarpMouseInWindow
Uint16 * gamma
Definition: SDL_sysvideo.h:92
int(* SetWindowGammaRamp)(_THIS, SDL_Window *window, const Uint16 *ramp)
Definition: SDL_sysvideo.h:224

◆ SDL_OnWindowFocusLost()

void SDL_OnWindowFocusLost ( SDL_Window window)

Definition at line 2518 of file SDL_video.c.

References SDL_Window::gamma, SDL_Window::saved_gamma, SDL_MinimizeWindow(), SDL_UpdateWindowGrab(), SDL_VideoDevice::SetWindowGammaRamp, and ShouldMinimizeOnFocusLoss().

Referenced by SDL_SendWindowEvent().

2519 {
2520  if (window->gamma && _this->SetWindowGammaRamp) {
2521  _this->SetWindowGammaRamp(_this, window, window->saved_gamma);
2522  }
2523 
2524  SDL_UpdateWindowGrab(window);
2525 
2526  if (ShouldMinimizeOnFocusLoss(window)) {
2527  SDL_MinimizeWindow(window);
2528  }
2529 }
Uint16 * saved_gamma
Definition: SDL_sysvideo.h:93
void SDL_MinimizeWindow(SDL_Window *window)
Minimize a window to an iconic representation.
Definition: SDL_video.c:2078
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
void SDL_UpdateWindowGrab(SDL_Window *window)
Definition: SDL_video.c:2369
Uint16 * gamma
Definition: SDL_sysvideo.h:92
int(* SetWindowGammaRamp)(_THIS, SDL_Window *window, const Uint16 *ramp)
Definition: SDL_sysvideo.h:224
static SDL_bool ShouldMinimizeOnFocusLoss(SDL_Window *window)
Definition: SDL_video.c:2502

◆ SDL_OnWindowHidden()

void SDL_OnWindowHidden ( SDL_Window window)

Definition at line 2437 of file SDL_video.c.

References SDL_FALSE, and SDL_UpdateFullscreenMode().

Referenced by SDL_SendWindowEvent().

2438 {
2440 }
static int SDL_UpdateFullscreenMode(SDL_Window *window, SDL_bool fullscreen)
Definition: SDL_video.c:1152

◆ SDL_OnWindowLeave()

void SDL_OnWindowLeave ( SDL_Window window)

Definition at line 2480 of file SDL_video.c.

Referenced by SDL_SendWindowEvent().

2481 {
2482 }

◆ SDL_OnWindowMinimized()

void SDL_OnWindowMinimized ( SDL_Window window)

Definition at line 2450 of file SDL_video.c.

References SDL_FALSE, and SDL_UpdateFullscreenMode().

Referenced by SDL_SendWindowEvent().

2451 {
2453 }
static int SDL_UpdateFullscreenMode(SDL_Window *window, SDL_bool fullscreen)
Definition: SDL_video.c:1152

◆ SDL_OnWindowResized()

void SDL_OnWindowResized ( SDL_Window window)

Definition at line 2443 of file SDL_video.c.

References SDL_Window::h, SDL_FALSE, SDL_SendWindowEvent(), SDL_WINDOWEVENT_SIZE_CHANGED, SDL_Window::surface_valid, and SDL_Window::w.

Referenced by SDL_SendWindowEvent(), SDL_SetWindowSize(), and SDL_UpdateFullscreenMode().

2444 {
2445  window->surface_valid = SDL_FALSE;
2446  SDL_SendWindowEvent(window, SDL_WINDOWEVENT_SIZE_CHANGED, window->w, window->h);
2447 }
int SDL_SendWindowEvent(SDL_Window *window, Uint8 windowevent, int data1, int data2)
SDL_bool surface_valid
Definition: SDL_sysvideo.h:96

◆ SDL_OnWindowRestored()

void SDL_OnWindowRestored ( SDL_Window window)

Definition at line 2456 of file SDL_video.c.

References FULLSCREEN_VISIBLE, SDL_TRUE, and SDL_UpdateFullscreenMode().

Referenced by SDL_OnWindowShown(), and SDL_SendWindowEvent().

2457 {
2458  /*
2459  * FIXME: Is this fine to just remove this, or should it be preserved just
2460  * for the fullscreen case? In principle it seems like just hiding/showing
2461  * windows shouldn't affect the stacking order; maybe the right fix is to
2462  * re-decouple OnWindowShown and OnWindowRestored.
2463  */
2464  /*SDL_RaiseWindow(window);*/
2465 
2466  if (FULLSCREEN_VISIBLE(window)) {
2468  }
2469 }
#define FULLSCREEN_VISIBLE(W)
Definition: SDL_sysvideo.h:114
static int SDL_UpdateFullscreenMode(SDL_Window *window, SDL_bool fullscreen)
Definition: SDL_video.c:1152

◆ SDL_OnWindowShown()

void SDL_OnWindowShown ( SDL_Window window)

Definition at line 2431 of file SDL_video.c.

References SDL_OnWindowRestored().

Referenced by SDL_SendWindowEvent().

2432 {
2433  SDL_OnWindowRestored(window);
2434 }
void SDL_OnWindowRestored(SDL_Window *window)
Definition: SDL_video.c:2456

◆ SDL_RecreateWindow()

int SDL_RecreateWindow ( SDL_Window window,
Uint32  flags 
)

Definition at line 1509 of file SDL_video.c.

References CREATE_FLAGS, SDL_VideoDevice::CreateWindow, SDL_VideoDevice::DestroyWindow, SDL_VideoDevice::DestroyWindowFramebuffer, SDL_Surface::flags, SDL_Window::flags, SDL_VideoDevice::GL_CreateContext, SDL_Window::hit_test, SDL_Window::icon, SDL_Window::is_destroying, SDL_Window::last_fullscreen_flags, NULL, SDL_DONTFREE, SDL_FALSE, SDL_FinishWindowCreation(), SDL_FreeSurface, SDL_GL_LoadLibrary(), SDL_GL_UnloadLibrary(), SDL_HideWindow(), SDL_SetError, SDL_TRUE, SDL_WINDOW_FOREIGN, SDL_WINDOW_HIDDEN, SDL_WINDOW_OPENGL, SDL_VideoDevice::SetWindowHitTest, SDL_VideoDevice::SetWindowIcon, SDL_VideoDevice::SetWindowTitle, SDL_Window::surface, and SDL_Window::title.

1510 {
1511  SDL_bool loaded_opengl = SDL_FALSE;
1512 
1514  return SDL_SetError("No OpenGL support in video driver");
1515  }
1516 
1517  if (window->flags & SDL_WINDOW_FOREIGN) {
1518  /* Can't destroy and re-create foreign windows, hrm */
1520  } else {
1522  }
1523 
1524  /* Restore video mode, etc. */
1525  SDL_HideWindow(window);
1526 
1527  /* Tear down the old native window */
1528  if (window->surface) {
1529  window->surface->flags &= ~SDL_DONTFREE;
1530  SDL_FreeSurface(window->surface);
1531  window->surface = NULL;
1532  }
1535  }
1537  _this->DestroyWindow(_this, window);
1538  }
1539 
1540  if ((window->flags & SDL_WINDOW_OPENGL) != (flags & SDL_WINDOW_OPENGL)) {
1541  if (flags & SDL_WINDOW_OPENGL) {
1542  if (SDL_GL_LoadLibrary(NULL) < 0) {
1543  return -1;
1544  }
1545  loaded_opengl = SDL_TRUE;
1546  } else {
1548  }
1549  }
1550 
1551  window->flags = ((flags & CREATE_FLAGS) | SDL_WINDOW_HIDDEN);
1552  window->last_fullscreen_flags = window->flags;
1553  window->is_destroying = SDL_FALSE;
1554 
1555  if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) {
1556  if (_this->CreateWindow(_this, window) < 0) {
1557  if (loaded_opengl) {
1559  window->flags &= ~SDL_WINDOW_OPENGL;
1560  }
1561  return -1;
1562  }
1563  }
1564 
1565  if (flags & SDL_WINDOW_FOREIGN) {
1566  window->flags |= SDL_WINDOW_FOREIGN;
1567  }
1568 
1569  if (_this->SetWindowTitle && window->title) {
1570  _this->SetWindowTitle(_this, window);
1571  }
1572 
1573  if (_this->SetWindowIcon && window->icon) {
1574  _this->SetWindowIcon(_this, window, window->icon);
1575  }
1576 
1577  if (window->hit_test) {
1578  _this->SetWindowHitTest(window, SDL_TRUE);
1579  }
1580 
1582 
1583  return 0;
1584 }
int(* SetWindowHitTest)(SDL_Window *window, SDL_bool enabled)
Definition: SDL_sysvideo.h:287
int SDL_GL_LoadLibrary(const char *path)
Dynamically load an OpenGL library.
Definition: SDL_video.c:2713
#define SDL_DONTFREE
Definition: SDL_surface.h:55
SDL_bool is_destroying
Definition: SDL_sysvideo.h:99
void SDL_HideWindow(SDL_Window *window)
Hide a window.
Definition: SDL_video.c:2030
Uint32 flags
Definition: SDL_surface.h:71
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
#define CREATE_FLAGS
Definition: SDL_video.c:1306
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:250
#define SDL_FreeSurface
void SDL_GL_UnloadLibrary(void)
Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
Definition: SDL_video.c:2764
void(* DestroyWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:227
void(* SetWindowIcon)(_THIS, SDL_Window *window, SDL_Surface *icon)
Definition: SDL_sysvideo.h:206
char * title
Definition: SDL_sysvideo.h:75
void(* DestroyWindowFramebuffer)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:230
#define NULL
Definition: begin_code.h:143
SDL_bool
Definition: SDL_stdinc.h:130
SDL_HitTest hit_test
Definition: SDL_sysvideo.h:104
Uint32 last_fullscreen_flags
Definition: SDL_sysvideo.h:82
#define SDL_SetError
SDL_Surface * icon
Definition: SDL_sysvideo.h:76
int(* CreateWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:203
static void SDL_FinishWindowCreation(SDL_Window *window, Uint32 flags)
Definition: SDL_video.c:1310
GLbitfield flags
void(* SetWindowTitle)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:205
Uint32 flags
Definition: SDL_sysvideo.h:81
SDL_Surface * surface
Definition: SDL_sysvideo.h:95

◆ SDL_ShouldAllowTopmost()

SDL_bool SDL_ShouldAllowTopmost ( void  )

Definition at line 3761 of file SDL_video.c.

References SDL_GetHintBoolean, SDL_HINT_ALLOW_TOPMOST, and SDL_TRUE.

3762 {
3764 }
#define SDL_GetHintBoolean
#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...
Definition: SDL_hints.h:384

◆ SDL_UpdateWindowGrab()

void SDL_UpdateWindowGrab ( SDL_Window window)

Definition at line 2369 of file SDL_video.c.

References SDL_Window::flags, SDL_VideoDevice::grabbed_window, NULL, SDL_FALSE, SDL_GetMouse(), SDL_TRUE, SDL_WINDOW_INPUT_FOCUS, SDL_WINDOW_INPUT_GRABBED, SDL_VideoDevice::SetWindowGrab, and window.

Referenced by SDL_OnWindowFocusGained(), SDL_OnWindowFocusLost(), SDL_SetRelativeMouseMode(), and SDL_SetWindowGrab().

2370 {
2371  SDL_Window *grabbed_window;
2372  SDL_bool grabbed;
2373  if ((SDL_GetMouse()->relative_mode || (window->flags & SDL_WINDOW_INPUT_GRABBED)) &&
2374  (window->flags & SDL_WINDOW_INPUT_FOCUS)) {
2375  grabbed = SDL_TRUE;
2376  } else {
2377  grabbed = SDL_FALSE;
2378  }
2379 
2380  grabbed_window = _this->grabbed_window;
2381  if (grabbed) {
2382  if (grabbed_window && (grabbed_window != window)) {
2383  /* stealing a grab from another window! */
2384  grabbed_window->flags &= ~SDL_WINDOW_INPUT_GRABBED;
2385  if (_this->SetWindowGrab) {
2386  _this->SetWindowGrab(_this, grabbed_window, SDL_FALSE);
2387  }
2388  }
2390  } else if (grabbed_window == window) {
2391  _this->grabbed_window = NULL; /* ungrabbing. */
2392  }
2393 
2394  if (_this->SetWindowGrab) {
2395  _this->SetWindowGrab(_this, window, grabbed);
2396  }
2397 }
SDL_Mouse * SDL_GetMouse(void)
Definition: SDL_mouse.c:66
static SDL_Window * window
static SDL_VideoDevice * _this
Definition: SDL_video.c:118
#define NULL
Definition: begin_code.h:143
SDL_bool
Definition: SDL_stdinc.h:130
The type used to identify a window.
Definition: SDL_sysvideo.h:71
SDL_Window * grabbed_window
Definition: SDL_sysvideo.h:295
Uint32 flags
Definition: SDL_sysvideo.h:81
void(* SetWindowGrab)(_THIS, SDL_Window *window, SDL_bool grabbed)
Definition: SDL_sysvideo.h:226