src/video/SDL_sysvideo.h
author Ryan C. Gordon <icculus@icculus.org>
Sat, 28 Mar 2015 00:48:03 -0400
changeset 9447 728a4bf8e02f
parent 9412 8b1436ce1028
child 9619 b94b6d0bff0f
permissions -rw-r--r--
Minor input grab clarifications.

Clarify that grabbing the mouse only works with one window at a time; this was
always true at the system level, though SDL could previously get confused
by multiple simultaneous grabs, so now we explicitly break any existing
grab before starting a new one and document it as such.

Also track the window that is currently grabbed, and provide an API to query
for that window. This makes it easy to automate mouse ungrabbing at
breakpoints with gdb7's scripting, since the scripts can now know which window
to ungrab.

In 2.1, we should probably change this API to SDL_GrabInput(win) and
SDL_UngrabInput(void), or something.
slouken@8582
     1
/*
slouken@8582
     2
  Simple DirectMedia Layer
slouken@8149
     3
  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
slouken@8582
     4
slouken@8582
     5
  This software is provided 'as-is', without any express or implied
slouken@8582
     6
  warranty.  In no event will the authors be held liable for any damages
slouken@8582
     7
  arising from the use of this software.
slouken@8582
     8
slouken@8582
     9
  Permission is granted to anyone to use this software for any purpose,
slouken@8582
    10
  including commercial applications, and to alter it and redistribute it
slouken@8582
    11
  freely, subject to the following restrictions:
slouken@8582
    12
slouken@8582
    13
  1. The origin of this software must not be misrepresented; you must not
slouken@8582
    14
     claim that you wrote the original software. If you use this software
slouken@8582
    15
     in a product, an acknowledgment in the product documentation would be
slouken@8582
    16
     appreciated but is not required.
slouken@8582
    17
  2. Altered source versions must be plainly marked as such, and must not be
slouken@8582
    18
     misrepresented as being the original software.
slouken@8582
    19
  3. This notice may not be removed or altered from any source distribution.
slouken@8582
    20
*/
icculus@8093
    21
#include "../SDL_internal.h"
slouken@8582
    22
slouken@8582
    23
#ifndef _SDL_sysvideo_h
slouken@8582
    24
#define _SDL_sysvideo_h
slouken@8582
    25
slouken@8582
    26
#include "SDL_messagebox.h"
slouken@8582
    27
#include "SDL_shape.h"
slouken@8582
    28
#include "SDL_thread.h"
slouken@8582
    29
slouken@8582
    30
/* The SDL video driver */
slouken@8582
    31
slouken@8582
    32
typedef struct SDL_WindowShaper SDL_WindowShaper;
slouken@8582
    33
typedef struct SDL_ShapeDriver SDL_ShapeDriver;
slouken@8582
    34
typedef struct SDL_VideoDisplay SDL_VideoDisplay;
slouken@8582
    35
typedef struct SDL_VideoDevice SDL_VideoDevice;
slouken@8582
    36
slouken@8582
    37
/* Define the SDL window-shaper structure */
slouken@8582
    38
struct SDL_WindowShaper
slouken@8582
    39
{
slouken@8582
    40
    /* The window associated with the shaper */
slouken@8582
    41
    SDL_Window *window;
slouken@8582
    42
slouken@8582
    43
    /* The user's specified coordinates for the window, for once we give it a shape. */
slouken@8582
    44
    Uint32 userx,usery;
slouken@8582
    45
slouken@8582
    46
    /* The parameters for shape calculation. */
slouken@8582
    47
    SDL_WindowShapeMode mode;
slouken@8582
    48
slouken@8582
    49
    /* Has this window been assigned a shape? */
slouken@8582
    50
    SDL_bool hasshape;
slouken@8582
    51
slouken@8582
    52
    void *driverdata;
slouken@8582
    53
};
slouken@8582
    54
slouken@8582
    55
/* Define the SDL shape driver structure */
slouken@8582
    56
struct SDL_ShapeDriver
slouken@8582
    57
{
slouken@8582
    58
    SDL_WindowShaper *(*CreateShaper)(SDL_Window * window);
slouken@8582
    59
    int (*SetWindowShape)(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);
slouken@8582
    60
    int (*ResizeWindowShape)(SDL_Window *window);
slouken@8582
    61
};
slouken@8582
    62
slouken@8582
    63
typedef struct SDL_WindowUserData
slouken@8582
    64
{
slouken@8582
    65
    char *name;
slouken@8582
    66
    void *data;
slouken@8582
    67
    struct SDL_WindowUserData *next;
slouken@8582
    68
} SDL_WindowUserData;
slouken@8582
    69
slouken@8582
    70
/* Define the SDL window structure, corresponding to toplevel windows */
slouken@8582
    71
struct SDL_Window
slouken@8582
    72
{
slouken@8582
    73
    const void *magic;
slouken@8582
    74
    Uint32 id;
slouken@8582
    75
    char *title;
slouken@8582
    76
    SDL_Surface *icon;
slouken@8582
    77
    int x, y;
slouken@8582
    78
    int w, h;
slouken@8582
    79
    int min_w, min_h;
slouken@8582
    80
    int max_w, max_h;
slouken@8582
    81
    Uint32 flags;
jorgen@8110
    82
    Uint32 last_fullscreen_flags;
slouken@8582
    83
slouken@8582
    84
    /* Stored position and size for windowed mode */
slouken@8582
    85
    SDL_Rect windowed;
slouken@8582
    86
slouken@8582
    87
    SDL_DisplayMode fullscreen_mode;
slouken@8582
    88
slouken@8582
    89
    float brightness;
slouken@8582
    90
    Uint16 *gamma;
slouken@8582
    91
    Uint16 *saved_gamma;        /* (just offset into gamma) */
slouken@8582
    92
slouken@8582
    93
    SDL_Surface *surface;
slouken@8582
    94
    SDL_bool surface_valid;
slouken@8582
    95
alfred@9037
    96
    SDL_bool is_hiding;
jorgen@8112
    97
    SDL_bool is_destroying;
jorgen@8112
    98
slouken@8582
    99
    SDL_WindowShaper *shaper;
slouken@8582
   100
icculus@8935
   101
    SDL_HitTest hit_test;
icculus@8935
   102
    void *hit_test_data;
icculus@8931
   103
slouken@8582
   104
    SDL_WindowUserData *data;
slouken@8582
   105
slouken@8582
   106
    void *driverdata;
slouken@8582
   107
slouken@8582
   108
    SDL_Window *prev;
slouken@8582
   109
    SDL_Window *next;
slouken@8582
   110
};
slouken@8582
   111
#define FULLSCREEN_VISIBLE(W) \
slouken@8582
   112
    (((W)->flags & SDL_WINDOW_FULLSCREEN) && \
slouken@8582
   113
     ((W)->flags & SDL_WINDOW_SHOWN) && \
slouken@8582
   114
     !((W)->flags & SDL_WINDOW_MINIMIZED))
slouken@8582
   115
slouken@8582
   116
/*
slouken@8582
   117
 * Define the SDL display structure This corresponds to physical monitors
slouken@8582
   118
 * attached to the system.
slouken@8582
   119
 */
slouken@8582
   120
struct SDL_VideoDisplay
slouken@8582
   121
{
slouken@8582
   122
    char *name;
slouken@8582
   123
    int max_display_modes;
slouken@8582
   124
    int num_display_modes;
slouken@8582
   125
    SDL_DisplayMode *display_modes;
slouken@8582
   126
    SDL_DisplayMode desktop_mode;
slouken@8582
   127
    SDL_DisplayMode current_mode;
slouken@8582
   128
slouken@8582
   129
    SDL_Window *fullscreen_window;
slouken@8582
   130
slouken@8582
   131
    SDL_VideoDevice *device;
slouken@8582
   132
slouken@8582
   133
    void *driverdata;
slouken@8582
   134
};
slouken@8582
   135
slouken@8582
   136
/* Forward declaration */
slouken@8582
   137
struct SDL_SysWMinfo;
slouken@8582
   138
slouken@8582
   139
/* Define the SDL video driver structure */
slouken@8582
   140
#define _THIS   SDL_VideoDevice *_this
slouken@8582
   141
slouken@8582
   142
struct SDL_VideoDevice
slouken@8582
   143
{
slouken@8582
   144
    /* * * */
slouken@8582
   145
    /* The name of this video driver */
slouken@8582
   146
    const char *name;
slouken@8582
   147
slouken@8582
   148
    /* * * */
slouken@8582
   149
    /* Initialization/Query functions */
slouken@8582
   150
slouken@8582
   151
    /*
slouken@8582
   152
     * Initialize the native video subsystem, filling in the list of
slouken@8582
   153
     * displays for this driver, returning 0 or -1 if there's an error.
slouken@8582
   154
     */
slouken@8582
   155
    int (*VideoInit) (_THIS);
slouken@8582
   156
slouken@8582
   157
    /*
slouken@8582
   158
     * Reverse the effects VideoInit() -- called if VideoInit() fails or
slouken@8582
   159
     * if the application is shutting down the video subsystem.
slouken@8582
   160
     */
slouken@8582
   161
    void (*VideoQuit) (_THIS);
slouken@8582
   162
slouken@8582
   163
    /* * * */
slouken@8582
   164
    /*
slouken@8582
   165
     * Display functions
slouken@8582
   166
     */
slouken@8582
   167
slouken@8582
   168
    /*
slouken@8582
   169
     * Get the bounds of a display
slouken@8582
   170
     */
slouken@8582
   171
    int (*GetDisplayBounds) (_THIS, SDL_VideoDisplay * display, SDL_Rect * rect);
slouken@8582
   172
slouken@8582
   173
    /*
slouken@8582
   174
     * Get a list of the available display modes for a display.
slouken@8582
   175
     */
slouken@8582
   176
    void (*GetDisplayModes) (_THIS, SDL_VideoDisplay * display);
slouken@8582
   177
slouken@8582
   178
    /*
slouken@8582
   179
     * Setting the display mode is independent of creating windows, so
slouken@8582
   180
     * when the display mode is changed, all existing windows should have
slouken@8582
   181
     * their data updated accordingly, including the display surfaces
slouken@8582
   182
     * associated with them.
slouken@8582
   183
     */
slouken@8582
   184
    int (*SetDisplayMode) (_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
slouken@8582
   185
slouken@8582
   186
    /* * * */
slouken@8582
   187
    /*
slouken@8582
   188
     * Window functions
slouken@8582
   189
     */
slouken@8582
   190
    int (*CreateWindow) (_THIS, SDL_Window * window);
slouken@8582
   191
    int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data);
slouken@8582
   192
    void (*SetWindowTitle) (_THIS, SDL_Window * window);
slouken@8582
   193
    void (*SetWindowIcon) (_THIS, SDL_Window * window, SDL_Surface * icon);
slouken@8582
   194
    void (*SetWindowPosition) (_THIS, SDL_Window * window);
slouken@8582
   195
    void (*SetWindowSize) (_THIS, SDL_Window * window);
slouken@8582
   196
    void (*SetWindowMinimumSize) (_THIS, SDL_Window * window);
slouken@8582
   197
    void (*SetWindowMaximumSize) (_THIS, SDL_Window * window);
slouken@8582
   198
    void (*ShowWindow) (_THIS, SDL_Window * window);
slouken@8582
   199
    void (*HideWindow) (_THIS, SDL_Window * window);
slouken@8582
   200
    void (*RaiseWindow) (_THIS, SDL_Window * window);
slouken@8582
   201
    void (*MaximizeWindow) (_THIS, SDL_Window * window);
slouken@8582
   202
    void (*MinimizeWindow) (_THIS, SDL_Window * window);
slouken@8582
   203
    void (*RestoreWindow) (_THIS, SDL_Window * window);
slouken@8582
   204
    void (*SetWindowBordered) (_THIS, SDL_Window * window, SDL_bool bordered);
slouken@8582
   205
    void (*SetWindowFullscreen) (_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen);
slouken@8582
   206
    int (*SetWindowGammaRamp) (_THIS, SDL_Window * window, const Uint16 * ramp);
slouken@8582
   207
    int (*GetWindowGammaRamp) (_THIS, SDL_Window * window, Uint16 * ramp);
slouken@8582
   208
    void (*SetWindowGrab) (_THIS, SDL_Window * window, SDL_bool grabbed);
slouken@8582
   209
    void (*DestroyWindow) (_THIS, SDL_Window * window);
slouken@8582
   210
    int (*CreateWindowFramebuffer) (_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch);
slouken@8582
   211
    int (*UpdateWindowFramebuffer) (_THIS, SDL_Window * window, const SDL_Rect * rects, int numrects);
slouken@8582
   212
    void (*DestroyWindowFramebuffer) (_THIS, SDL_Window * window);
slouken@8582
   213
    void (*OnWindowEnter) (_THIS, SDL_Window * window);
slouken@8582
   214
slouken@8582
   215
    /* * * */
slouken@8582
   216
    /*
slouken@8582
   217
     * Shaped-window functions
slouken@8582
   218
     */
slouken@8582
   219
    SDL_ShapeDriver shape_driver;
slouken@8582
   220
slouken@8582
   221
    /* Get some platform dependent window information */
icculus@8782
   222
    SDL_bool(*GetWindowWMInfo) (_THIS, SDL_Window * window,
icculus@8782
   223
                                struct SDL_SysWMinfo * info);
slouken@8582
   224
slouken@8582
   225
    /* * * */
slouken@8582
   226
    /*
slouken@8582
   227
     * OpenGL support
slouken@8582
   228
     */
slouken@8582
   229
    int (*GL_LoadLibrary) (_THIS, const char *path);
slouken@8582
   230
    void *(*GL_GetProcAddress) (_THIS, const char *proc);
slouken@8582
   231
    void (*GL_UnloadLibrary) (_THIS);
slouken@8582
   232
      SDL_GLContext(*GL_CreateContext) (_THIS, SDL_Window * window);
slouken@8582
   233
    int (*GL_MakeCurrent) (_THIS, SDL_Window * window, SDL_GLContext context);
slouken@8582
   234
    void (*GL_GetDrawableSize) (_THIS, SDL_Window * window, int *w, int *h);
slouken@8582
   235
    int (*GL_SetSwapInterval) (_THIS, int interval);
slouken@8582
   236
    int (*GL_GetSwapInterval) (_THIS);
slouken@8582
   237
    void (*GL_SwapWindow) (_THIS, SDL_Window * window);
slouken@8582
   238
    void (*GL_DeleteContext) (_THIS, SDL_GLContext context);
slouken@8582
   239
slouken@8582
   240
    /* * * */
slouken@8582
   241
    /*
slouken@8582
   242
     * Event manager functions
slouken@8582
   243
     */
slouken@8582
   244
    void (*PumpEvents) (_THIS);
slouken@8582
   245
slouken@8582
   246
    /* Suspend the screensaver */
slouken@8582
   247
    void (*SuspendScreenSaver) (_THIS);
slouken@8582
   248
slouken@8582
   249
    /* Text input */
slouken@8582
   250
    void (*StartTextInput) (_THIS);
slouken@8582
   251
    void (*StopTextInput) (_THIS);
slouken@8582
   252
    void (*SetTextInputRect) (_THIS, SDL_Rect *rect);
slouken@8582
   253
slouken@8582
   254
    /* Screen keyboard */
slouken@8582
   255
    SDL_bool (*HasScreenKeyboardSupport) (_THIS);
slouken@8582
   256
    void (*ShowScreenKeyboard) (_THIS, SDL_Window *window);
slouken@8582
   257
    void (*HideScreenKeyboard) (_THIS, SDL_Window *window);
slouken@8582
   258
    SDL_bool (*IsScreenKeyboardShown) (_THIS, SDL_Window *window);
slouken@8582
   259
slouken@8582
   260
    /* Clipboard */
slouken@8582
   261
    int (*SetClipboardText) (_THIS, const char *text);
slouken@8582
   262
    char * (*GetClipboardText) (_THIS);
slouken@8582
   263
    SDL_bool (*HasClipboardText) (_THIS);
slouken@8582
   264
slouken@8582
   265
    /* MessageBox */
slouken@8582
   266
    int (*ShowMessageBox) (_THIS, const SDL_MessageBoxData *messageboxdata, int *buttonid);
slouken@8582
   267
icculus@8935
   268
    /* Hit-testing */
icculus@8935
   269
    int (*SetWindowHitTest)(SDL_Window * window, SDL_bool enabled);
icculus@8931
   270
slouken@8582
   271
    /* * * */
slouken@8582
   272
    /* Data common to all drivers */
slouken@8582
   273
    SDL_bool suspend_screensaver;
slouken@8582
   274
    int num_displays;
slouken@8582
   275
    SDL_VideoDisplay *displays;
slouken@8582
   276
    SDL_Window *windows;
icculus@9447
   277
    SDL_Window *grabbed_window;
slouken@8582
   278
    Uint8 window_magic;
slouken@8582
   279
    Uint32 next_object_id;
slouken@8582
   280
    char * clipboard_text;
slouken@8582
   281
slouken@8582
   282
    /* * * */
slouken@8582
   283
    /* Data used by the GL drivers */
slouken@8582
   284
    struct
slouken@8582
   285
    {
slouken@8582
   286
        int red_size;
slouken@8582
   287
        int green_size;
slouken@8582
   288
        int blue_size;
slouken@8582
   289
        int alpha_size;
slouken@8582
   290
        int depth_size;
slouken@8582
   291
        int buffer_size;
slouken@8582
   292
        int stencil_size;
slouken@8582
   293
        int double_buffer;
slouken@8582
   294
        int accum_red_size;
slouken@8582
   295
        int accum_green_size;
slouken@8582
   296
        int accum_blue_size;
slouken@8582
   297
        int accum_alpha_size;
slouken@8582
   298
        int stereo;
slouken@8582
   299
        int multisamplebuffers;
slouken@8582
   300
        int multisamplesamples;
slouken@8582
   301
        int accelerated;
slouken@8582
   302
        int major_version;
slouken@8582
   303
        int minor_version;
slouken@8582
   304
        int flags;
slouken@8582
   305
        int profile_mask;
slouken@8582
   306
        int share_with_current_context;
mdiluzio@9412
   307
        int release_behavior;
slouken@8582
   308
        int framebuffer_srgb_capable;
slouken@8582
   309
        int retained_backing;
slouken@8582
   310
        int driver_loaded;
slouken@8582
   311
        char driver_path[256];
slouken@8582
   312
        void *dll_handle;
slouken@8582
   313
    } gl_config;
slouken@8582
   314
slouken@8582
   315
    /* * * */
slouken@8582
   316
    /* Cache current GL context; don't call the OS when it hasn't changed. */
slouken@8582
   317
    /* We have the global pointers here so Cocoa continues to work the way
slouken@8582
   318
       it always has, and the thread-local storage for the general case.
slouken@8582
   319
     */
slouken@8582
   320
    SDL_Window *current_glwin;
slouken@8582
   321
    SDL_GLContext current_glctx;
slouken@8582
   322
    SDL_TLSID current_glwin_tls;
slouken@8582
   323
    SDL_TLSID current_glctx_tls;
slouken@8582
   324
slouken@8582
   325
    /* * * */
slouken@8582
   326
    /* Data private to this driver */
slouken@8582
   327
    void *driverdata;
slouken@8582
   328
    struct SDL_GLDriverData *gl_data;
slouken@8582
   329
    
slouken@8582
   330
#if SDL_VIDEO_OPENGL_EGL
slouken@8582
   331
    struct SDL_EGL_VideoData *egl_data;
slouken@8582
   332
#endif
slouken@8582
   333
    
slouken@8582
   334
#if SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2
slouken@8582
   335
    struct SDL_PrivateGLESData *gles_data;
slouken@8582
   336
#endif
slouken@8582
   337
slouken@8582
   338
    /* * * */
slouken@8582
   339
    /* The function used to dispose of this structure */
slouken@8582
   340
    void (*free) (_THIS);
slouken@8582
   341
};
slouken@8582
   342
slouken@8582
   343
typedef struct VideoBootStrap
slouken@8582
   344
{
slouken@8582
   345
    const char *name;
slouken@8582
   346
    const char *desc;
slouken@8582
   347
    int (*available) (void);
slouken@8582
   348
    SDL_VideoDevice *(*create) (int devindex);
slouken@8582
   349
} VideoBootStrap;
slouken@8582
   350
slouken@8582
   351
#if SDL_VIDEO_DRIVER_COCOA
slouken@8582
   352
extern VideoBootStrap COCOA_bootstrap;
slouken@8582
   353
#endif
slouken@8582
   354
#if SDL_VIDEO_DRIVER_X11
slouken@8582
   355
extern VideoBootStrap X11_bootstrap;
slouken@8582
   356
#endif
icculus@8153
   357
#if SDL_VIDEO_DRIVER_MIR
icculus@8153
   358
extern VideoBootStrap MIR_bootstrap;
icculus@8153
   359
#endif
slouken@8582
   360
#if SDL_VIDEO_DRIVER_DIRECTFB
slouken@8582
   361
extern VideoBootStrap DirectFB_bootstrap;
slouken@8582
   362
#endif
slouken@8582
   363
#if SDL_VIDEO_DRIVER_WINDOWS
slouken@8582
   364
extern VideoBootStrap WINDOWS_bootstrap;
slouken@8582
   365
#endif
slouken@8582
   366
#if SDL_VIDEO_DRIVER_WINRT
slouken@8582
   367
extern VideoBootStrap WINRT_bootstrap;
slouken@8582
   368
#endif
slouken@8582
   369
#if SDL_VIDEO_DRIVER_HAIKU
slouken@8582
   370
extern VideoBootStrap HAIKU_bootstrap;
slouken@8582
   371
#endif
slouken@8582
   372
#if SDL_VIDEO_DRIVER_PANDORA
slouken@8582
   373
extern VideoBootStrap PND_bootstrap;
slouken@8582
   374
#endif
slouken@8582
   375
#if SDL_VIDEO_DRIVER_UIKIT
slouken@8582
   376
extern VideoBootStrap UIKIT_bootstrap;
slouken@8582
   377
#endif
slouken@8582
   378
#if SDL_VIDEO_DRIVER_ANDROID
slouken@8582
   379
extern VideoBootStrap Android_bootstrap;
slouken@8582
   380
#endif
slouken@8582
   381
#if SDL_VIDEO_DRIVER_PSP
slouken@8582
   382
extern VideoBootStrap PSP_bootstrap;
slouken@8582
   383
#endif
slouken@8582
   384
#if SDL_VIDEO_DRIVER_RPI
slouken@8582
   385
extern VideoBootStrap RPI_bootstrap;
slouken@8582
   386
#endif
slouken@8582
   387
#if SDL_VIDEO_DRIVER_DUMMY
slouken@8582
   388
extern VideoBootStrap DUMMY_bootstrap;
slouken@8582
   389
#endif
gabomdq@8062
   390
#if SDL_VIDEO_DRIVER_WAYLAND
gabomdq@8062
   391
extern VideoBootStrap Wayland_bootstrap;
gabomdq@8062
   392
#endif
gabomdq@8833
   393
#if SDL_VIDEO_DRIVER_NACL
gabomdq@8833
   394
extern VideoBootStrap NACL_bootstrap;
gabomdq@8833
   395
#endif
slouken@9164
   396
#if SDL_VIDEO_DRIVER_VIVANTE
slouken@9164
   397
extern VideoBootStrap VIVANTE_bootstrap;
denis@9127
   398
#endif
icculus@9278
   399
#if SDL_VIDEO_DRIVER_EMSCRIPTEN
icculus@9278
   400
extern VideoBootStrap Emscripten_bootstrap;
icculus@9278
   401
#endif
slouken@8582
   402
slouken@8582
   403
extern SDL_VideoDevice *SDL_GetVideoDevice(void);
slouken@8582
   404
extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode);
slouken@8582
   405
extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display);
slouken@8582
   406
extern SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode * mode);
slouken@8582
   407
extern SDL_VideoDisplay *SDL_GetDisplayForWindow(SDL_Window *window);
slouken@8582
   408
extern void *SDL_GetDisplayDriverData( int displayIndex );
slouken@8582
   409
slouken@8582
   410
extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags);
slouken@8582
   411
slouken@8582
   412
extern void SDL_OnWindowShown(SDL_Window * window);
slouken@8582
   413
extern void SDL_OnWindowHidden(SDL_Window * window);
slouken@8582
   414
extern void SDL_OnWindowResized(SDL_Window * window);
slouken@8582
   415
extern void SDL_OnWindowMinimized(SDL_Window * window);
slouken@8582
   416
extern void SDL_OnWindowRestored(SDL_Window * window);
slouken@8582
   417
extern void SDL_OnWindowEnter(SDL_Window * window);
slouken@8582
   418
extern void SDL_OnWindowLeave(SDL_Window * window);
slouken@8582
   419
extern void SDL_OnWindowFocusGained(SDL_Window * window);
slouken@8582
   420
extern void SDL_OnWindowFocusLost(SDL_Window * window);
slouken@8582
   421
extern void SDL_UpdateWindowGrab(SDL_Window * window);
slouken@8582
   422
extern SDL_Window * SDL_GetFocusWindow(void);
slouken@8582
   423
slouken@8582
   424
extern SDL_bool SDL_ShouldAllowTopmost(void);
slouken@8582
   425
slouken@8582
   426
#endif /* _SDL_sysvideo_h */
slouken@8582
   427
slouken@8582
   428
/* vi: set ts=4 sw=4 expandtab: */