src/video/SDL_sysvideo.h
author Sam Lantinga <slouken@libsdl.org>
Wed, 02 Aug 2017 10:22:48 -0700
changeset 11175 cbc6a8a5b701
parent 11147 5b2841f73a33
child 11255 0302e7e91db7
permissions -rw-r--r--
Fixed bug 3690 - SDL2 KMS/DRM render context support

Manuel

The attached patch adds support for KMS/DRM context graphics.

It builds with no problem on X86_64 GNU/Linux systems, provided the needed libraries are present, and on ARM GNU/Linux systems that have KMS/DRM support and a GLES2 implementation.
Tested on Raspberry Pi: KMS/DRM is what the Raspberry Pi will use as default in the near future, once the propietary DispmanX API by Broadcom is overtaken by open graphics stack, it's possible to boot current Raspbian system in KMS mode by adding "dtoverlay=vc4-kms-v3d" to config.txt on Raspbian's boot partition.
X86 systems use KMS right away in every current GNU/Linux system.

Simple build instructions:

$./autogen.sh
$./configure --enable-video-kmsdrm
$make
slouken@8582
     1
/*
slouken@8582
     2
  Simple DirectMedia Layer
slouken@10737
     3
  Copyright (C) 1997-2017 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@10638
    23
#ifndef SDL_sysvideo_h_
slouken@10638
    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
icculus@10025
    89
    float opacity;
icculus@10025
    90
slouken@8582
    91
    float brightness;
slouken@8582
    92
    Uint16 *gamma;
slouken@8582
    93
    Uint16 *saved_gamma;        /* (just offset into gamma) */
slouken@8582
    94
slouken@8582
    95
    SDL_Surface *surface;
slouken@8582
    96
    SDL_bool surface_valid;
slouken@8582
    97
alfred@9037
    98
    SDL_bool is_hiding;
jorgen@8112
    99
    SDL_bool is_destroying;
icculus@10022
   100
    SDL_bool is_dropping;       /* drag/drop in progress, expecting SDL_SendDropComplete(). */
jorgen@8112
   101
slouken@8582
   102
    SDL_WindowShaper *shaper;
slouken@8582
   103
icculus@8935
   104
    SDL_HitTest hit_test;
icculus@8935
   105
    void *hit_test_data;
icculus@8931
   106
slouken@8582
   107
    SDL_WindowUserData *data;
slouken@8582
   108
slouken@8582
   109
    void *driverdata;
slouken@8582
   110
slouken@8582
   111
    SDL_Window *prev;
slouken@8582
   112
    SDL_Window *next;
slouken@8582
   113
};
slouken@8582
   114
#define FULLSCREEN_VISIBLE(W) \
slouken@8582
   115
    (((W)->flags & SDL_WINDOW_FULLSCREEN) && \
slouken@8582
   116
     ((W)->flags & SDL_WINDOW_SHOWN) && \
slouken@8582
   117
     !((W)->flags & SDL_WINDOW_MINIMIZED))
slouken@8582
   118
slouken@8582
   119
/*
slouken@8582
   120
 * Define the SDL display structure This corresponds to physical monitors
slouken@8582
   121
 * attached to the system.
slouken@8582
   122
 */
slouken@8582
   123
struct SDL_VideoDisplay
slouken@8582
   124
{
slouken@8582
   125
    char *name;
slouken@8582
   126
    int max_display_modes;
slouken@8582
   127
    int num_display_modes;
slouken@8582
   128
    SDL_DisplayMode *display_modes;
slouken@8582
   129
    SDL_DisplayMode desktop_mode;
slouken@8582
   130
    SDL_DisplayMode current_mode;
slouken@8582
   131
slouken@8582
   132
    SDL_Window *fullscreen_window;
slouken@8582
   133
slouken@8582
   134
    SDL_VideoDevice *device;
slouken@8582
   135
slouken@8582
   136
    void *driverdata;
slouken@8582
   137
};
slouken@8582
   138
slouken@8582
   139
/* Forward declaration */
slouken@8582
   140
struct SDL_SysWMinfo;
slouken@8582
   141
slouken@8582
   142
/* Define the SDL video driver structure */
slouken@8582
   143
#define _THIS   SDL_VideoDevice *_this
slouken@8582
   144
slouken@8582
   145
struct SDL_VideoDevice
slouken@8582
   146
{
slouken@8582
   147
    /* * * */
slouken@8582
   148
    /* The name of this video driver */
slouken@8582
   149
    const char *name;
slouken@8582
   150
slouken@8582
   151
    /* * * */
slouken@8582
   152
    /* Initialization/Query functions */
slouken@8582
   153
slouken@8582
   154
    /*
slouken@8582
   155
     * Initialize the native video subsystem, filling in the list of
slouken@8582
   156
     * displays for this driver, returning 0 or -1 if there's an error.
slouken@8582
   157
     */
slouken@8582
   158
    int (*VideoInit) (_THIS);
slouken@8582
   159
slouken@8582
   160
    /*
slouken@8582
   161
     * Reverse the effects VideoInit() -- called if VideoInit() fails or
slouken@8582
   162
     * if the application is shutting down the video subsystem.
slouken@8582
   163
     */
slouken@8582
   164
    void (*VideoQuit) (_THIS);
slouken@8582
   165
slouken@10880
   166
    /*
slouken@10880
   167
     * Reinitialize the touch devices -- called if an unknown touch ID occurs.
slouken@10880
   168
     */
slouken@10880
   169
    void (*ResetTouch) (_THIS);
slouken@10880
   170
slouken@8582
   171
    /* * * */
slouken@8582
   172
    /*
slouken@8582
   173
     * Display functions
slouken@8582
   174
     */
slouken@8582
   175
slouken@8582
   176
    /*
slouken@8582
   177
     * Get the bounds of a display
slouken@8582
   178
     */
slouken@8582
   179
    int (*GetDisplayBounds) (_THIS, SDL_VideoDisplay * display, SDL_Rect * rect);
slouken@8582
   180
slouken@8582
   181
    /*
alfred@9813
   182
     * Get the dots/pixels-per-inch of a display
alfred@9813
   183
     */
alfred@9813
   184
    int (*GetDisplayDPI) (_THIS, SDL_VideoDisplay * display, float * ddpi, float * hdpi, float * vdpi);
alfred@9813
   185
alfred@9813
   186
    /*
icculus@10019
   187
     * Get the usable bounds of a display (bounds minus menubar or whatever)
icculus@10019
   188
     */
icculus@10019
   189
    int (*GetDisplayUsableBounds) (_THIS, SDL_VideoDisplay * display, SDL_Rect * rect);
icculus@10019
   190
icculus@10019
   191
    /*
slouken@8582
   192
     * Get a list of the available display modes for a display.
slouken@8582
   193
     */
slouken@8582
   194
    void (*GetDisplayModes) (_THIS, SDL_VideoDisplay * display);
slouken@8582
   195
slouken@8582
   196
    /*
slouken@8582
   197
     * Setting the display mode is independent of creating windows, so
slouken@8582
   198
     * when the display mode is changed, all existing windows should have
slouken@8582
   199
     * their data updated accordingly, including the display surfaces
slouken@8582
   200
     * associated with them.
slouken@8582
   201
     */
slouken@8582
   202
    int (*SetDisplayMode) (_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode);
slouken@8582
   203
slouken@8582
   204
    /* * * */
slouken@8582
   205
    /*
slouken@8582
   206
     * Window functions
slouken@8582
   207
     */
slouken@8582
   208
    int (*CreateWindow) (_THIS, SDL_Window * window);
slouken@8582
   209
    int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data);
slouken@8582
   210
    void (*SetWindowTitle) (_THIS, SDL_Window * window);
slouken@8582
   211
    void (*SetWindowIcon) (_THIS, SDL_Window * window, SDL_Surface * icon);
slouken@8582
   212
    void (*SetWindowPosition) (_THIS, SDL_Window * window);
slouken@8582
   213
    void (*SetWindowSize) (_THIS, SDL_Window * window);
slouken@8582
   214
    void (*SetWindowMinimumSize) (_THIS, SDL_Window * window);
slouken@8582
   215
    void (*SetWindowMaximumSize) (_THIS, SDL_Window * window);
icculus@10024
   216
    int (*GetWindowBordersSize) (_THIS, SDL_Window * window, int *top, int *left, int *bottom, int *right);
icculus@10025
   217
    int (*SetWindowOpacity) (_THIS, SDL_Window * window, float opacity);
icculus@10027
   218
    int (*SetWindowModalFor) (_THIS, SDL_Window * modal_window, SDL_Window * parent_window);
icculus@10026
   219
    int (*SetWindowInputFocus) (_THIS, SDL_Window * window);
slouken@8582
   220
    void (*ShowWindow) (_THIS, SDL_Window * window);
slouken@8582
   221
    void (*HideWindow) (_THIS, SDL_Window * window);
slouken@8582
   222
    void (*RaiseWindow) (_THIS, SDL_Window * window);
slouken@8582
   223
    void (*MaximizeWindow) (_THIS, SDL_Window * window);
slouken@8582
   224
    void (*MinimizeWindow) (_THIS, SDL_Window * window);
slouken@8582
   225
    void (*RestoreWindow) (_THIS, SDL_Window * window);
slouken@8582
   226
    void (*SetWindowBordered) (_THIS, SDL_Window * window, SDL_bool bordered);
icculus@10385
   227
    void (*SetWindowResizable) (_THIS, SDL_Window * window, SDL_bool resizable);
slouken@8582
   228
    void (*SetWindowFullscreen) (_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen);
slouken@8582
   229
    int (*SetWindowGammaRamp) (_THIS, SDL_Window * window, const Uint16 * ramp);
slouken@8582
   230
    int (*GetWindowGammaRamp) (_THIS, SDL_Window * window, Uint16 * ramp);
slouken@8582
   231
    void (*SetWindowGrab) (_THIS, SDL_Window * window, SDL_bool grabbed);
slouken@8582
   232
    void (*DestroyWindow) (_THIS, SDL_Window * window);
slouken@8582
   233
    int (*CreateWindowFramebuffer) (_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch);
slouken@8582
   234
    int (*UpdateWindowFramebuffer) (_THIS, SDL_Window * window, const SDL_Rect * rects, int numrects);
slouken@8582
   235
    void (*DestroyWindowFramebuffer) (_THIS, SDL_Window * window);
slouken@8582
   236
    void (*OnWindowEnter) (_THIS, SDL_Window * window);
slouken@8582
   237
slouken@8582
   238
    /* * * */
slouken@8582
   239
    /*
slouken@8582
   240
     * Shaped-window functions
slouken@8582
   241
     */
slouken@8582
   242
    SDL_ShapeDriver shape_driver;
slouken@8582
   243
slouken@8582
   244
    /* Get some platform dependent window information */
icculus@8782
   245
    SDL_bool(*GetWindowWMInfo) (_THIS, SDL_Window * window,
icculus@8782
   246
                                struct SDL_SysWMinfo * info);
slouken@8582
   247
slouken@8582
   248
    /* * * */
slouken@8582
   249
    /*
slouken@8582
   250
     * OpenGL support
slouken@8582
   251
     */
slouken@8582
   252
    int (*GL_LoadLibrary) (_THIS, const char *path);
slouken@8582
   253
    void *(*GL_GetProcAddress) (_THIS, const char *proc);
slouken@8582
   254
    void (*GL_UnloadLibrary) (_THIS);
slouken@8582
   255
      SDL_GLContext(*GL_CreateContext) (_THIS, SDL_Window * window);
slouken@8582
   256
    int (*GL_MakeCurrent) (_THIS, SDL_Window * window, SDL_GLContext context);
slouken@8582
   257
    void (*GL_GetDrawableSize) (_THIS, SDL_Window * window, int *w, int *h);
slouken@8582
   258
    int (*GL_SetSwapInterval) (_THIS, int interval);
slouken@8582
   259
    int (*GL_GetSwapInterval) (_THIS);
slouken@10690
   260
    int (*GL_SwapWindow) (_THIS, SDL_Window * window);
slouken@8582
   261
    void (*GL_DeleteContext) (_THIS, SDL_GLContext context);
slouken@8582
   262
slouken@8582
   263
    /* * * */
slouken@8582
   264
    /*
slouken@8582
   265
     * Event manager functions
slouken@8582
   266
     */
slouken@8582
   267
    void (*PumpEvents) (_THIS);
slouken@8582
   268
slouken@8582
   269
    /* Suspend the screensaver */
slouken@8582
   270
    void (*SuspendScreenSaver) (_THIS);
slouken@8582
   271
slouken@8582
   272
    /* Text input */
slouken@8582
   273
    void (*StartTextInput) (_THIS);
slouken@8582
   274
    void (*StopTextInput) (_THIS);
slouken@8582
   275
    void (*SetTextInputRect) (_THIS, SDL_Rect *rect);
slouken@8582
   276
slouken@8582
   277
    /* Screen keyboard */
slouken@8582
   278
    SDL_bool (*HasScreenKeyboardSupport) (_THIS);
slouken@8582
   279
    void (*ShowScreenKeyboard) (_THIS, SDL_Window *window);
slouken@8582
   280
    void (*HideScreenKeyboard) (_THIS, SDL_Window *window);
slouken@8582
   281
    SDL_bool (*IsScreenKeyboardShown) (_THIS, SDL_Window *window);
slouken@8582
   282
slouken@8582
   283
    /* Clipboard */
slouken@8582
   284
    int (*SetClipboardText) (_THIS, const char *text);
slouken@8582
   285
    char * (*GetClipboardText) (_THIS);
slouken@8582
   286
    SDL_bool (*HasClipboardText) (_THIS);
slouken@8582
   287
slouken@8582
   288
    /* MessageBox */
slouken@8582
   289
    int (*ShowMessageBox) (_THIS, const SDL_MessageBoxData *messageboxdata, int *buttonid);
slouken@8582
   290
icculus@8935
   291
    /* Hit-testing */
icculus@8935
   292
    int (*SetWindowHitTest)(SDL_Window * window, SDL_bool enabled);
icculus@8931
   293
slouken@8582
   294
    /* * * */
slouken@8582
   295
    /* Data common to all drivers */
slouken@10699
   296
    SDL_bool is_dummy;
slouken@8582
   297
    SDL_bool suspend_screensaver;
slouken@8582
   298
    int num_displays;
slouken@8582
   299
    SDL_VideoDisplay *displays;
slouken@8582
   300
    SDL_Window *windows;
icculus@9447
   301
    SDL_Window *grabbed_window;
slouken@8582
   302
    Uint8 window_magic;
slouken@8582
   303
    Uint32 next_object_id;
slouken@10699
   304
    char *clipboard_text;
slouken@8582
   305
slouken@8582
   306
    /* * * */
slouken@8582
   307
    /* Data used by the GL drivers */
slouken@8582
   308
    struct
slouken@8582
   309
    {
slouken@8582
   310
        int red_size;
slouken@8582
   311
        int green_size;
slouken@8582
   312
        int blue_size;
slouken@8582
   313
        int alpha_size;
slouken@8582
   314
        int depth_size;
slouken@8582
   315
        int buffer_size;
slouken@8582
   316
        int stencil_size;
slouken@8582
   317
        int double_buffer;
slouken@8582
   318
        int accum_red_size;
slouken@8582
   319
        int accum_green_size;
slouken@8582
   320
        int accum_blue_size;
slouken@8582
   321
        int accum_alpha_size;
slouken@8582
   322
        int stereo;
slouken@8582
   323
        int multisamplebuffers;
slouken@8582
   324
        int multisamplesamples;
slouken@8582
   325
        int accelerated;
slouken@8582
   326
        int major_version;
slouken@8582
   327
        int minor_version;
slouken@8582
   328
        int flags;
slouken@8582
   329
        int profile_mask;
slouken@8582
   330
        int share_with_current_context;
mdiluzio@9412
   331
        int release_behavior;
slouken@8582
   332
        int framebuffer_srgb_capable;
slouken@8582
   333
        int retained_backing;
slouken@8582
   334
        int driver_loaded;
slouken@8582
   335
        char driver_path[256];
slouken@8582
   336
        void *dll_handle;
slouken@8582
   337
    } gl_config;
slouken@8582
   338
slouken@8582
   339
    /* * * */
slouken@8582
   340
    /* Cache current GL context; don't call the OS when it hasn't changed. */
slouken@8582
   341
    /* We have the global pointers here so Cocoa continues to work the way
slouken@8582
   342
       it always has, and the thread-local storage for the general case.
slouken@8582
   343
     */
slouken@8582
   344
    SDL_Window *current_glwin;
slouken@8582
   345
    SDL_GLContext current_glctx;
slouken@8582
   346
    SDL_TLSID current_glwin_tls;
slouken@8582
   347
    SDL_TLSID current_glctx_tls;
slouken@8582
   348
slouken@8582
   349
    /* * * */
slouken@8582
   350
    /* Data private to this driver */
slouken@8582
   351
    void *driverdata;
slouken@8582
   352
    struct SDL_GLDriverData *gl_data;
slouken@8582
   353
    
slouken@8582
   354
#if SDL_VIDEO_OPENGL_EGL
slouken@8582
   355
    struct SDL_EGL_VideoData *egl_data;
slouken@8582
   356
#endif
slouken@8582
   357
    
slouken@8582
   358
#if SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2
slouken@8582
   359
    struct SDL_PrivateGLESData *gles_data;
slouken@8582
   360
#endif
slouken@8582
   361
slouken@8582
   362
    /* * * */
slouken@8582
   363
    /* The function used to dispose of this structure */
slouken@8582
   364
    void (*free) (_THIS);
slouken@8582
   365
};
slouken@8582
   366
slouken@8582
   367
typedef struct VideoBootStrap
slouken@8582
   368
{
slouken@8582
   369
    const char *name;
slouken@8582
   370
    const char *desc;
slouken@8582
   371
    int (*available) (void);
slouken@8582
   372
    SDL_VideoDevice *(*create) (int devindex);
slouken@8582
   373
} VideoBootStrap;
slouken@8582
   374
icculus@10914
   375
/* Not all of these are available in a given build. Use #ifdefs, etc. */
slouken@8582
   376
extern VideoBootStrap COCOA_bootstrap;
slouken@8582
   377
extern VideoBootStrap X11_bootstrap;
icculus@8153
   378
extern VideoBootStrap MIR_bootstrap;
slouken@8582
   379
extern VideoBootStrap DirectFB_bootstrap;
slouken@8582
   380
extern VideoBootStrap WINDOWS_bootstrap;
slouken@8582
   381
extern VideoBootStrap WINRT_bootstrap;
slouken@8582
   382
extern VideoBootStrap HAIKU_bootstrap;
slouken@8582
   383
extern VideoBootStrap PND_bootstrap;
slouken@8582
   384
extern VideoBootStrap UIKIT_bootstrap;
slouken@8582
   385
extern VideoBootStrap Android_bootstrap;
slouken@8582
   386
extern VideoBootStrap PSP_bootstrap;
slouken@8582
   387
extern VideoBootStrap RPI_bootstrap;
slouken@11175
   388
extern VideoBootStrap KMSDRM_bootstrap;
slouken@8582
   389
extern VideoBootStrap DUMMY_bootstrap;
gabomdq@8062
   390
extern VideoBootStrap Wayland_bootstrap;
gabomdq@8833
   391
extern VideoBootStrap NACL_bootstrap;
slouken@9164
   392
extern VideoBootStrap VIVANTE_bootstrap;
icculus@9278
   393
extern VideoBootStrap Emscripten_bootstrap;
icculus@11119
   394
extern VideoBootStrap QNX_bootstrap;
slouken@8582
   395
slouken@8582
   396
extern SDL_VideoDevice *SDL_GetVideoDevice(void);
slouken@8582
   397
extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode);
slouken@8582
   398
extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display);
slouken@8582
   399
extern SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode * mode);
slouken@8582
   400
extern SDL_VideoDisplay *SDL_GetDisplayForWindow(SDL_Window *window);
slouken@8582
   401
extern void *SDL_GetDisplayDriverData( int displayIndex );
slouken@8582
   402
slouken@10806
   403
extern void SDL_GL_DeduceMaxSupportedESProfile(int* major, int* minor);
slouken@10806
   404
slouken@8582
   405
extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags);
slouken@8582
   406
slouken@8582
   407
extern void SDL_OnWindowShown(SDL_Window * window);
slouken@8582
   408
extern void SDL_OnWindowHidden(SDL_Window * window);
slouken@8582
   409
extern void SDL_OnWindowResized(SDL_Window * window);
slouken@8582
   410
extern void SDL_OnWindowMinimized(SDL_Window * window);
slouken@8582
   411
extern void SDL_OnWindowRestored(SDL_Window * window);
slouken@8582
   412
extern void SDL_OnWindowEnter(SDL_Window * window);
slouken@8582
   413
extern void SDL_OnWindowLeave(SDL_Window * window);
slouken@8582
   414
extern void SDL_OnWindowFocusGained(SDL_Window * window);
slouken@8582
   415
extern void SDL_OnWindowFocusLost(SDL_Window * window);
slouken@8582
   416
extern void SDL_UpdateWindowGrab(SDL_Window * window);
slouken@8582
   417
extern SDL_Window * SDL_GetFocusWindow(void);
slouken@8582
   418
slouken@8582
   419
extern SDL_bool SDL_ShouldAllowTopmost(void);
slouken@8582
   420
alfred@9813
   421
extern float SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches);
alfred@9813
   422
slime73@11147
   423
extern void SDL_OnApplicationWillTerminate(void);
slime73@11147
   424
extern void SDL_OnApplicationDidReceiveMemoryWarning(void);
slime73@11147
   425
extern void SDL_OnApplicationWillResignActive(void);
slime73@11147
   426
extern void SDL_OnApplicationDidEnterBackground(void);
slime73@11147
   427
extern void SDL_OnApplicationWillEnterForeground(void);
slime73@11147
   428
extern void SDL_OnApplicationDidBecomeActive(void);
slouken@10995
   429
slouken@10638
   430
#endif /* SDL_sysvideo_h_ */
slouken@8582
   431
slouken@8582
   432
/* vi: set ts=4 sw=4 expandtab: */