src/video/SDL_sysvideo.h
author Marc Di Luzio <mdiluzio@feralinteractive.com>
Fri, 06 Mar 2015 16:03:40 +0000
changeset 9412 8b1436ce1028
parent 9278 8900afb78a19
child 9447 728a4bf8e02f
permissions -rw-r--r--
Allow setting of GL_CONTEXT_RELEASE_BEHAVIOR when creating the GL context when GLX_ARB_context_flush_control is available.

This extension allows the user to specify whether a full flush is performed when making a context not current.
The only way to set this currently is at context creation, so this patch provides that functionality.
Defualt behaviour is set at FLUSH, as per the spec.

This patch does not contain the changes to WGL, appleGL or other platforms as I do not have access to GL 4.5 hardware on those platforms.

Full details on the use of KHR_context_flush_control can be found here:
https://www.opengl.org/registry/specs/KHR/context_flush_control.txt
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;
slouken@8582
   277
    Uint8 window_magic;
slouken@8582
   278
    Uint32 next_object_id;
slouken@8582
   279
    char * clipboard_text;
slouken@8582
   280
slouken@8582
   281
    /* * * */
slouken@8582
   282
    /* Data used by the GL drivers */
slouken@8582
   283
    struct
slouken@8582
   284
    {
slouken@8582
   285
        int red_size;
slouken@8582
   286
        int green_size;
slouken@8582
   287
        int blue_size;
slouken@8582
   288
        int alpha_size;
slouken@8582
   289
        int depth_size;
slouken@8582
   290
        int buffer_size;
slouken@8582
   291
        int stencil_size;
slouken@8582
   292
        int double_buffer;
slouken@8582
   293
        int accum_red_size;
slouken@8582
   294
        int accum_green_size;
slouken@8582
   295
        int accum_blue_size;
slouken@8582
   296
        int accum_alpha_size;
slouken@8582
   297
        int stereo;
slouken@8582
   298
        int multisamplebuffers;
slouken@8582
   299
        int multisamplesamples;
slouken@8582
   300
        int accelerated;
slouken@8582
   301
        int major_version;
slouken@8582
   302
        int minor_version;
slouken@8582
   303
        int flags;
slouken@8582
   304
        int profile_mask;
slouken@8582
   305
        int share_with_current_context;
mdiluzio@9412
   306
        int release_behavior;
slouken@8582
   307
        int framebuffer_srgb_capable;
slouken@8582
   308
        int retained_backing;
slouken@8582
   309
        int driver_loaded;
slouken@8582
   310
        char driver_path[256];
slouken@8582
   311
        void *dll_handle;
slouken@8582
   312
    } gl_config;
slouken@8582
   313
slouken@8582
   314
    /* * * */
slouken@8582
   315
    /* Cache current GL context; don't call the OS when it hasn't changed. */
slouken@8582
   316
    /* We have the global pointers here so Cocoa continues to work the way
slouken@8582
   317
       it always has, and the thread-local storage for the general case.
slouken@8582
   318
     */
slouken@8582
   319
    SDL_Window *current_glwin;
slouken@8582
   320
    SDL_GLContext current_glctx;
slouken@8582
   321
    SDL_TLSID current_glwin_tls;
slouken@8582
   322
    SDL_TLSID current_glctx_tls;
slouken@8582
   323
slouken@8582
   324
    /* * * */
slouken@8582
   325
    /* Data private to this driver */
slouken@8582
   326
    void *driverdata;
slouken@8582
   327
    struct SDL_GLDriverData *gl_data;
slouken@8582
   328
    
slouken@8582
   329
#if SDL_VIDEO_OPENGL_EGL
slouken@8582
   330
    struct SDL_EGL_VideoData *egl_data;
slouken@8582
   331
#endif
slouken@8582
   332
    
slouken@8582
   333
#if SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2
slouken@8582
   334
    struct SDL_PrivateGLESData *gles_data;
slouken@8582
   335
#endif
slouken@8582
   336
slouken@8582
   337
    /* * * */
slouken@8582
   338
    /* The function used to dispose of this structure */
slouken@8582
   339
    void (*free) (_THIS);
slouken@8582
   340
};
slouken@8582
   341
slouken@8582
   342
typedef struct VideoBootStrap
slouken@8582
   343
{
slouken@8582
   344
    const char *name;
slouken@8582
   345
    const char *desc;
slouken@8582
   346
    int (*available) (void);
slouken@8582
   347
    SDL_VideoDevice *(*create) (int devindex);
slouken@8582
   348
} VideoBootStrap;
slouken@8582
   349
slouken@8582
   350
#if SDL_VIDEO_DRIVER_COCOA
slouken@8582
   351
extern VideoBootStrap COCOA_bootstrap;
slouken@8582
   352
#endif
slouken@8582
   353
#if SDL_VIDEO_DRIVER_X11
slouken@8582
   354
extern VideoBootStrap X11_bootstrap;
slouken@8582
   355
#endif
icculus@8153
   356
#if SDL_VIDEO_DRIVER_MIR
icculus@8153
   357
extern VideoBootStrap MIR_bootstrap;
icculus@8153
   358
#endif
slouken@8582
   359
#if SDL_VIDEO_DRIVER_DIRECTFB
slouken@8582
   360
extern VideoBootStrap DirectFB_bootstrap;
slouken@8582
   361
#endif
slouken@8582
   362
#if SDL_VIDEO_DRIVER_WINDOWS
slouken@8582
   363
extern VideoBootStrap WINDOWS_bootstrap;
slouken@8582
   364
#endif
slouken@8582
   365
#if SDL_VIDEO_DRIVER_WINRT
slouken@8582
   366
extern VideoBootStrap WINRT_bootstrap;
slouken@8582
   367
#endif
slouken@8582
   368
#if SDL_VIDEO_DRIVER_HAIKU
slouken@8582
   369
extern VideoBootStrap HAIKU_bootstrap;
slouken@8582
   370
#endif
slouken@8582
   371
#if SDL_VIDEO_DRIVER_PANDORA
slouken@8582
   372
extern VideoBootStrap PND_bootstrap;
slouken@8582
   373
#endif
slouken@8582
   374
#if SDL_VIDEO_DRIVER_UIKIT
slouken@8582
   375
extern VideoBootStrap UIKIT_bootstrap;
slouken@8582
   376
#endif
slouken@8582
   377
#if SDL_VIDEO_DRIVER_ANDROID
slouken@8582
   378
extern VideoBootStrap Android_bootstrap;
slouken@8582
   379
#endif
slouken@8582
   380
#if SDL_VIDEO_DRIVER_PSP
slouken@8582
   381
extern VideoBootStrap PSP_bootstrap;
slouken@8582
   382
#endif
slouken@8582
   383
#if SDL_VIDEO_DRIVER_RPI
slouken@8582
   384
extern VideoBootStrap RPI_bootstrap;
slouken@8582
   385
#endif
slouken@8582
   386
#if SDL_VIDEO_DRIVER_DUMMY
slouken@8582
   387
extern VideoBootStrap DUMMY_bootstrap;
slouken@8582
   388
#endif
gabomdq@8062
   389
#if SDL_VIDEO_DRIVER_WAYLAND
gabomdq@8062
   390
extern VideoBootStrap Wayland_bootstrap;
gabomdq@8062
   391
#endif
gabomdq@8833
   392
#if SDL_VIDEO_DRIVER_NACL
gabomdq@8833
   393
extern VideoBootStrap NACL_bootstrap;
gabomdq@8833
   394
#endif
slouken@9164
   395
#if SDL_VIDEO_DRIVER_VIVANTE
slouken@9164
   396
extern VideoBootStrap VIVANTE_bootstrap;
denis@9127
   397
#endif
icculus@9278
   398
#if SDL_VIDEO_DRIVER_EMSCRIPTEN
icculus@9278
   399
extern VideoBootStrap Emscripten_bootstrap;
icculus@9278
   400
#endif
slouken@8582
   401
slouken@8582
   402
extern SDL_VideoDevice *SDL_GetVideoDevice(void);
slouken@8582
   403
extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode);
slouken@8582
   404
extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display);
slouken@8582
   405
extern SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode * mode);
slouken@8582
   406
extern SDL_VideoDisplay *SDL_GetDisplayForWindow(SDL_Window *window);
slouken@8582
   407
extern void *SDL_GetDisplayDriverData( int displayIndex );
slouken@8582
   408
slouken@8582
   409
extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags);
slouken@8582
   410
slouken@8582
   411
extern void SDL_OnWindowShown(SDL_Window * window);
slouken@8582
   412
extern void SDL_OnWindowHidden(SDL_Window * window);
slouken@8582
   413
extern void SDL_OnWindowResized(SDL_Window * window);
slouken@8582
   414
extern void SDL_OnWindowMinimized(SDL_Window * window);
slouken@8582
   415
extern void SDL_OnWindowRestored(SDL_Window * window);
slouken@8582
   416
extern void SDL_OnWindowEnter(SDL_Window * window);
slouken@8582
   417
extern void SDL_OnWindowLeave(SDL_Window * window);
slouken@8582
   418
extern void SDL_OnWindowFocusGained(SDL_Window * window);
slouken@8582
   419
extern void SDL_OnWindowFocusLost(SDL_Window * window);
slouken@8582
   420
extern void SDL_UpdateWindowGrab(SDL_Window * window);
slouken@8582
   421
extern SDL_Window * SDL_GetFocusWindow(void);
slouken@8582
   422
slouken@8582
   423
extern SDL_bool SDL_ShouldAllowTopmost(void);
slouken@8582
   424
slouken@8582
   425
#endif /* _SDL_sysvideo_h */
slouken@8582
   426
slouken@8582
   427
/* vi: set ts=4 sw=4 expandtab: */