src/video/SDL_sysvideo.h
author Sam Lantinga <slouken@libsdl.org>
Sat, 20 Dec 2008 12:00:00 +0000
changeset 2884 9dde605c7540
parent 2859 99210400e8b9
child 2901 133601e3b255
permissions -rw-r--r--
Date: Fri, 19 Dec 2008 20:17:35 +0100
From: Couriersud
Subject: Re: Aw: Experience using SDL1.3 in sdlmame/Proposal for api additions

> For consistency you'd probably want:
> SDL_SetRenderDrawColor(Uint8 r, Uint8 g, Uint8 b, Uint8 a);
> SDL_SetRenderDrawBlendMode(SDL_BlendMode blendMode);
> SDL_RenderLine(int x1, int y1, int x2, int y2);
> SDL_RenderFill(SDL_Rect *rect);
>
> You probably also want to add API functions query the current state.
>

I have implemented the above api for the opengl, x11, directfb and
software renderers. I have also renamed *TEXTUREBLENDMODE* constants to
BLENDMODE*. The unix build compiles. The windows renderer still needs to
be updated, but I have no windows development machine at hand. Have a
look at the x11 renderer for a sample.

Vector games now run at 90% both on opengl and directfb in comparison to
sdlmame's own opengl renderer. The same applies to raster games.

The diff also includes

a) Changed XDrawRect to XFillRect in x11 renderer
b) A number of changes to fix blending and modulation issues in the
directfb renderer.
slouken@0
     1
/*
slouken@0
     2
    SDL - Simple DirectMedia Layer
slouken@2859
     3
    Copyright (C) 1997-2009 Sam Lantinga
slouken@0
     4
slouken@0
     5
    This library is free software; you can redistribute it and/or
slouken@1312
     6
    modify it under the terms of the GNU Lesser General Public
slouken@0
     7
    License as published by the Free Software Foundation; either
slouken@1312
     8
    version 2.1 of the License, or (at your option) any later version.
slouken@0
     9
slouken@0
    10
    This library is distributed in the hope that it will be useful,
slouken@0
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
slouken@0
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
slouken@1312
    13
    Lesser General Public License for more details.
slouken@0
    14
slouken@1312
    15
    You should have received a copy of the GNU Lesser General Public
slouken@1312
    16
    License along with this library; if not, write to the Free Software
slouken@1312
    17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
slouken@0
    18
slouken@0
    19
    Sam Lantinga
slouken@252
    20
    slouken@libsdl.org
slouken@0
    21
*/
slouken@1402
    22
#include "SDL_config.h"
slouken@0
    23
slouken@0
    24
#ifndef _SDL_sysvideo_h
slouken@0
    25
#define _SDL_sysvideo_h
slouken@0
    26
slouken@0
    27
#include "SDL_mouse.h"
slouken@2268
    28
#include "SDL_keysym.h"
slouken@0
    29
slouken@0
    30
/* The SDL video driver */
slouken@1895
    31
slouken@1895
    32
typedef struct SDL_Window SDL_Window;
slouken@1895
    33
typedef struct SDL_Texture SDL_Texture;
slouken@1895
    34
typedef struct SDL_Renderer SDL_Renderer;
slouken@1895
    35
typedef struct SDL_RenderDriver SDL_RenderDriver;
slouken@1895
    36
typedef struct SDL_VideoDisplay SDL_VideoDisplay;
slouken@0
    37
typedef struct SDL_VideoDevice SDL_VideoDevice;
slouken@0
    38
slouken@1895
    39
/* Define the SDL texture structure */
slouken@2753
    40
struct SDL_Texture
slouken@2753
    41
{
slouken@2753
    42
    Uint32 id;
slouken@1895
    43
slouken@2753
    44
    Uint32 format;              /**< The pixel format of the texture */
slouken@2753
    45
    int access;                 /**< SDL_TextureAccess */
slouken@2753
    46
    int w;                      /**< The width of the texture */
slouken@2753
    47
    int h;                      /**< The height of the texture */
slouken@2753
    48
    int modMode;                /**< The texture modulation mode */
slouken@2753
    49
    int blendMode;                      /**< The texture blend mode */
slouken@2753
    50
    int scaleMode;                      /**< The texture scale mode */
slouken@2753
    51
    Uint8 r, g, b, a;                   /**< Texture modulation values */
slouken@1895
    52
slouken@2753
    53
    SDL_Renderer *renderer;
slouken@1895
    54
slouken@2753
    55
    void *driverdata;                   /**< Driver specific texture representation */
slouken@1895
    56
slouken@2753
    57
    SDL_Texture *next;
slouken@1895
    58
};
slouken@1895
    59
slouken@1895
    60
/* Define the SDL renderer structure */
slouken@2753
    61
struct SDL_Renderer
slouken@2753
    62
{
slouken@2753
    63
    int (*ActivateRenderer) (SDL_Renderer * renderer);
slouken@2753
    64
    int (*DisplayModeChanged) (SDL_Renderer * renderer);
slouken@2753
    65
    int (*CreateTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
slouken@2753
    66
    int (*QueryTexturePixels) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    67
                               void **pixels, int *pitch);
slouken@2753
    68
    int (*SetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    69
                              const SDL_Color * colors, int firstcolor,
slouken@2753
    70
                              int ncolors);
slouken@2753
    71
    int (*GetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    72
                              SDL_Color * colors, int firstcolor,
slouken@2753
    73
                              int ncolors);
slouken@2753
    74
    int (*SetTextureColorMod) (SDL_Renderer * renderer,
slouken@2753
    75
                               SDL_Texture * texture);
slouken@2753
    76
    int (*SetTextureAlphaMod) (SDL_Renderer * renderer,
slouken@2753
    77
                               SDL_Texture * texture);
slouken@2753
    78
    int (*SetTextureBlendMode) (SDL_Renderer * renderer,
slouken@2753
    79
                                SDL_Texture * texture);
slouken@2753
    80
    int (*SetTextureScaleMode) (SDL_Renderer * renderer,
slouken@2753
    81
                                SDL_Texture * texture);
slouken@2753
    82
    int (*UpdateTexture) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    83
                          const SDL_Rect * rect, const void *pixels,
slouken@2753
    84
                          int pitch);
slouken@2753
    85
    int (*LockTexture) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    86
                        const SDL_Rect * rect, int markDirty, void **pixels,
slouken@2753
    87
                        int *pitch);
slouken@2753
    88
    void (*UnlockTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
slouken@2753
    89
    void (*DirtyTexture) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    90
                          int numrects, const SDL_Rect * rects);
slouken@2884
    91
    int (*SetDrawColor) (SDL_Renderer * renderer);
slouken@2884
    92
    int (*SetDrawBlendMode) (SDL_Renderer * renderer);
slouken@2884
    93
    int (*RenderLine) (SDL_Renderer * renderer, int x1, int y1, int x2,
slouken@2884
    94
                       int y2);
slouken@2884
    95
    int (*RenderFill) (SDL_Renderer * renderer, const SDL_Rect * rect);
slouken@2753
    96
    int (*RenderCopy) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    97
                       const SDL_Rect * srcrect, const SDL_Rect * dstrect);
slouken@2753
    98
    void (*RenderPresent) (SDL_Renderer * renderer);
slouken@2753
    99
    void (*DestroyTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
slouken@1895
   100
slouken@2753
   101
    void (*DestroyRenderer) (SDL_Renderer * renderer);
slouken@1895
   102
slouken@2753
   103
    /* The current renderer info */
slouken@2753
   104
    SDL_RendererInfo info;
slouken@1895
   105
slouken@2753
   106
    /* The window associated with the renderer */
slouken@2753
   107
    SDL_WindowID window;
slouken@1895
   108
slouken@2884
   109
    Uint8 r, g, b, a;                   /**< Color for drawing operations values */
slouken@2884
   110
    int blendMode;                      /**< The drawing blend mode */
slouken@2884
   111
slouken@2753
   112
    void *driverdata;
slouken@1895
   113
};
slouken@1895
   114
slouken@1895
   115
/* Define the SDL render driver structure */
slouken@2753
   116
struct SDL_RenderDriver
slouken@2753
   117
{
slouken@2753
   118
    SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags);
slouken@1895
   119
slouken@2753
   120
    /* Info about the renderer capabilities */
slouken@2753
   121
    SDL_RendererInfo info;
slouken@1895
   122
};
slouken@1895
   123
slouken@1895
   124
/* Define the SDL window structure, corresponding to toplevel windows */
slouken@2753
   125
struct SDL_Window
slouken@2753
   126
{
slouken@2753
   127
    Uint32 id;
slouken@1895
   128
slouken@2753
   129
    char *title;
slouken@2753
   130
    int x, y;
slouken@2753
   131
    int w, h;
slouken@2753
   132
    Uint32 flags;
slouken@1895
   133
slouken@2753
   134
    int display;
slouken@2753
   135
    SDL_Renderer *renderer;
slouken@1895
   136
slouken@2753
   137
    void *userdata;
slouken@2753
   138
    void *driverdata;
slouken@1895
   139
};
slouken@1895
   140
#define FULLSCREEN_VISIBLE(W) \
slouken@1895
   141
    (((W)->flags & SDL_WINDOW_FULLSCREEN) && \
slouken@1895
   142
     ((W)->flags & SDL_WINDOW_SHOWN) && \
slouken@1895
   143
     !((W)->flags & SDL_WINDOW_MINIMIZED))
slouken@1895
   144
hfutrell@2742
   145
/*
hfutrell@2742
   146
 * Define the SDL display structure This corresponds to physical monitors
hfutrell@2742
   147
 * attached to the system.
slouken@1895
   148
 */
slouken@2753
   149
struct SDL_VideoDisplay
slouken@2753
   150
{
slouken@2753
   151
    int max_display_modes;
slouken@2753
   152
    int num_display_modes;
slouken@2753
   153
    SDL_DisplayMode *display_modes;
slouken@2753
   154
    SDL_DisplayMode desktop_mode;
slouken@2753
   155
    SDL_DisplayMode current_mode;
slouken@2753
   156
    SDL_DisplayMode fullscreen_mode;
slouken@2753
   157
    SDL_Palette *palette;
slouken@1895
   158
slouken@2753
   159
    Uint16 *gamma;
slouken@2753
   160
    Uint16 *saved_gamma;        /* (just offset into gamma) */
slouken@1895
   161
slouken@2753
   162
    int num_render_drivers;
slouken@2753
   163
    SDL_RenderDriver *render_drivers;
slouken@1895
   164
slouken@2753
   165
    int num_windows;
slouken@2753
   166
    SDL_Window *windows;
slouken@1895
   167
slouken@2753
   168
    SDL_Renderer *current_renderer;
slouken@1895
   169
slouken@2753
   170
    /* The hash list of textures */
slouken@2753
   171
    SDL_Texture *textures[64];
slouken@1895
   172
slouken@2753
   173
    SDL_VideoDevice *device;
slouken@1895
   174
slouken@2753
   175
    void *driverdata;
slouken@1895
   176
};
slouken@1895
   177
slouken@0
   178
/* Define the SDL video driver structure */
slouken@0
   179
#define _THIS	SDL_VideoDevice *_this
slouken@0
   180
slouken@2753
   181
struct SDL_VideoDevice
slouken@2753
   182
{
slouken@2753
   183
    /* * * */
slouken@2753
   184
    /* The name of this video driver */
slouken@2753
   185
    const char *name;
slouken@0
   186
slouken@2753
   187
    /* * * */
slouken@2753
   188
    /* Initialization/Query functions */
slouken@0
   189
slouken@2753
   190
    /*
slouken@2753
   191
     * Initialize the native video subsystem, filling in the list of
slouken@2753
   192
     * displays for this driver, returning 0 or -1 if there's an error.
slouken@2753
   193
     */
slouken@2753
   194
    int (*VideoInit) (_THIS);
slouken@0
   195
slouken@2753
   196
    /*
slouken@2753
   197
     * Reverse the effects VideoInit() -- called if VideoInit() fails or
slouken@2753
   198
     * if the application is shutting down the video subsystem.
slouken@2753
   199
     */
slouken@2753
   200
    void (*VideoQuit) (_THIS);
slouken@1913
   201
slouken@2753
   202
    /* * * */
slouken@2753
   203
    /*
slouken@2753
   204
     * Display functions
slouken@2753
   205
     */
slouken@0
   206
slouken@2753
   207
    /*
slouken@2753
   208
     * Get a list of the available display modes. e.g.
slouken@2753
   209
     * SDL_AddDisplayMode(_this->current_display, mode)
slouken@2753
   210
     */
slouken@2753
   211
    void (*GetDisplayModes) (_THIS);
slouken@0
   212
slouken@2753
   213
    /*
slouken@2753
   214
     * Setting the display mode is independent of creating windows, so
slouken@2753
   215
     * when the display mode is changed, all existing windows should have
slouken@2753
   216
     * their data updated accordingly, including the display surfaces
slouken@2753
   217
     * associated with them.
slouken@2753
   218
     */
slouken@2753
   219
    int (*SetDisplayMode) (_THIS, SDL_DisplayMode * mode);
slouken@0
   220
slouken@2753
   221
    /* Set the color entries of the display palette */
slouken@2753
   222
    int (*SetDisplayPalette) (_THIS, SDL_Palette * palette);
slouken@0
   223
slouken@2753
   224
    /* Get the color entries of the display palette */
slouken@2753
   225
    int (*GetDisplayPalette) (_THIS, SDL_Palette * palette);
slouken@0
   226
slouken@2753
   227
    /* Set the gamma ramp */
slouken@2753
   228
    int (*SetDisplayGammaRamp) (_THIS, Uint16 * ramp);
slouken@0
   229
slouken@2753
   230
    /* Get the gamma ramp */
slouken@2753
   231
    int (*GetDisplayGammaRamp) (_THIS, Uint16 * ramp);
slouken@0
   232
slouken@2753
   233
    /* * * */
slouken@2753
   234
    /*
slouken@2753
   235
     * Window functions
slouken@2753
   236
     */
slouken@2753
   237
    int (*CreateWindow) (_THIS, SDL_Window * window);
slouken@2753
   238
    int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data);
slouken@2753
   239
    void (*SetWindowTitle) (_THIS, SDL_Window * window);
slouken@2753
   240
    void (*SetWindowPosition) (_THIS, SDL_Window * window);
slouken@2753
   241
    void (*SetWindowSize) (_THIS, SDL_Window * window);
slouken@2753
   242
    void (*ShowWindow) (_THIS, SDL_Window * window);
slouken@2753
   243
    void (*HideWindow) (_THIS, SDL_Window * window);
slouken@2753
   244
    void (*RaiseWindow) (_THIS, SDL_Window * window);
slouken@2753
   245
    void (*MaximizeWindow) (_THIS, SDL_Window * window);
slouken@2753
   246
    void (*MinimizeWindow) (_THIS, SDL_Window * window);
slouken@2753
   247
    void (*RestoreWindow) (_THIS, SDL_Window * window);
slouken@2753
   248
    void (*SetWindowGrab) (_THIS, SDL_Window * window);
slouken@2753
   249
    void (*DestroyWindow) (_THIS, SDL_Window * window);
slouken@0
   250
slouken@2753
   251
    /* Get some platform dependent window information */
slouken@2753
   252
      SDL_bool(*GetWindowWMInfo) (_THIS, SDL_Window * window,
slouken@2753
   253
                                  struct SDL_SysWMinfo * info);
slouken@0
   254
slouken@2753
   255
    /* * * */
slouken@2753
   256
    /*
slouken@2753
   257
     * OpenGL support
slouken@2753
   258
     */
slouken@2753
   259
    int (*GL_LoadLibrary) (_THIS, const char *path);
slouken@2753
   260
    void *(*GL_GetProcAddress) (_THIS, const char *proc);
slouken@2753
   261
      SDL_GLContext(*GL_CreateContext) (_THIS, SDL_Window * window);
slouken@2753
   262
    int (*GL_MakeCurrent) (_THIS, SDL_Window * window, SDL_GLContext context);
slouken@2753
   263
    int (*GL_SetSwapInterval) (_THIS, int interval);
slouken@2753
   264
    int (*GL_GetSwapInterval) (_THIS);
slouken@2753
   265
    void (*GL_SwapWindow) (_THIS, SDL_Window * window);
slouken@2753
   266
    void (*GL_DeleteContext) (_THIS, SDL_GLContext context);
slouken@0
   267
slouken@2753
   268
    /* * * */
slouken@2753
   269
    /*
slouken@2753
   270
     * Event manager functions
slouken@2753
   271
     */
slouken@2753
   272
    void (*PumpEvents) (_THIS);
slouken@0
   273
slouken@2753
   274
    /* * * */
slouken@2753
   275
    /* Data common to all drivers */
slouken@2753
   276
    int num_displays;
slouken@2753
   277
    SDL_VideoDisplay *displays;
slouken@2753
   278
    int current_display;
slouken@2753
   279
    Uint32 next_object_id;
slouken@0
   280
slouken@2753
   281
    /* * * */
slouken@2753
   282
    /* Data used by the GL drivers */
slouken@2753
   283
    struct
slouken@2753
   284
    {
slouken@2753
   285
        int red_size;
slouken@2753
   286
        int green_size;
slouken@2753
   287
        int blue_size;
slouken@2753
   288
        int alpha_size;
slouken@2753
   289
        int depth_size;
slouken@2753
   290
        int buffer_size;
slouken@2753
   291
        int stencil_size;
slouken@2753
   292
        int double_buffer;
slouken@2753
   293
        int accum_red_size;
slouken@2753
   294
        int accum_green_size;
slouken@2753
   295
        int accum_blue_size;
slouken@2753
   296
        int accum_alpha_size;
slouken@2753
   297
        int stereo;
slouken@2753
   298
        int multisamplebuffers;
slouken@2753
   299
        int multisamplesamples;
slouken@2753
   300
        int accelerated;
slouken@2753
   301
        int retained_backing;
slouken@2753
   302
        int driver_loaded;
slouken@2753
   303
        char driver_path[256];
slouken@2753
   304
        void *dll_handle;
slouken@2753
   305
    } gl_config;
slouken@0
   306
slouken@2753
   307
    /* * * */
slouken@2753
   308
    /* Data private to this driver */
slouken@2753
   309
    void *driverdata;
slouken@2753
   310
    struct SDL_GLDriverData *gl_data;
slouken@0
   311
slouken@2753
   312
    /* * * */
slouken@2753
   313
    /* The function used to dispose of this structure */
slouken@2753
   314
    void (*free) (_THIS);
slouken@1895
   315
};
slouken@0
   316
slouken@2753
   317
typedef struct VideoBootStrap
slouken@2753
   318
{
slouken@2753
   319
    const char *name;
slouken@2753
   320
    const char *desc;
slouken@2753
   321
    int (*available) (void);
slouken@2753
   322
    SDL_VideoDevice *(*create) (int devindex);
slouken@2753
   323
} VideoBootStrap;
slouken@0
   324
slouken@1931
   325
#if SDL_VIDEO_DRIVER_COCOA
slouken@1931
   326
extern VideoBootStrap COCOA_bootstrap;
slouken@1361
   327
#endif
slouken@1361
   328
#if SDL_VIDEO_DRIVER_X11
slouken@0
   329
extern VideoBootStrap X11_bootstrap;
slouken@0
   330
#endif
slouken@1361
   331
#if SDL_VIDEO_DRIVER_NANOX
slouken@30
   332
extern VideoBootStrap NX_bootstrap;
slouken@30
   333
#endif
slouken@1361
   334
#if SDL_VIDEO_DRIVER_IPOD
icculus@1140
   335
extern VideoBootStrap iPod_bootstrap;
icculus@1140
   336
#endif
slouken@1361
   337
#if SDL_VIDEO_DRIVER_WSCONS
slouken@1361
   338
extern VideoBootStrap WSCONS_bootstrap;
slouken@1361
   339
#endif
slouken@1361
   340
#if SDL_VIDEO_DRIVER_FBCON
slouken@0
   341
extern VideoBootStrap FBCON_bootstrap;
slouken@0
   342
#endif
slouken@1361
   343
#if SDL_VIDEO_DRIVER_DIRECTFB
slouken@167
   344
extern VideoBootStrap DirectFB_bootstrap;
slouken@167
   345
#endif
slouken@1361
   346
#if SDL_VIDEO_DRIVER_PS2GS
slouken@0
   347
extern VideoBootStrap PS2GS_bootstrap;
slouken@0
   348
#endif
slouken@1361
   349
#if SDL_VIDEO_DRIVER_VGL
slouken@75
   350
extern VideoBootStrap VGL_bootstrap;
slouken@75
   351
#endif
slouken@1361
   352
#if SDL_VIDEO_DRIVER_SVGALIB
slouken@0
   353
extern VideoBootStrap SVGALIB_bootstrap;
slouken@0
   354
#endif
slouken@1361
   355
#if SDL_VIDEO_DRIVER_GAPI
slouken@1361
   356
extern VideoBootStrap GAPI_bootstrap;
slouken@1361
   357
#endif
slouken@1895
   358
#if SDL_VIDEO_DRIVER_WIN32
slouken@1895
   359
extern VideoBootStrap WIN32_bootstrap;
slouken@1361
   360
#endif
slouken@1361
   361
#if SDL_VIDEO_DRIVER_BWINDOW
slouken@1361
   362
extern VideoBootStrap BWINDOW_bootstrap;
slouken@1361
   363
#endif
slouken@1361
   364
#if SDL_VIDEO_DRIVER_PHOTON
slouken@1361
   365
extern VideoBootStrap ph_bootstrap;
slouken@1361
   366
#endif
slouken@1361
   367
#if SDL_VIDEO_DRIVER_EPOC
slouken@1361
   368
extern VideoBootStrap EPOC_bootstrap;
slouken@1361
   369
#endif
slouken@1361
   370
#if SDL_VIDEO_DRIVER_XBIOS
slouken@1361
   371
extern VideoBootStrap XBIOS_bootstrap;
slouken@1361
   372
#endif
slouken@1361
   373
#if SDL_VIDEO_DRIVER_GEM
slouken@1361
   374
extern VideoBootStrap GEM_bootstrap;
slouken@1361
   375
#endif
slouken@1361
   376
#if SDL_VIDEO_DRIVER_DC
slouken@1361
   377
extern VideoBootStrap DC_bootstrap;
slouken@1361
   378
#endif
slouken@1361
   379
#if SDL_VIDEO_DRIVER_RISCOS
slouken@1361
   380
extern VideoBootStrap RISCOS_bootstrap;
slouken@1361
   381
#endif
slouken@1361
   382
#if SDL_VIDEO_DRIVER_OS2FS
slouken@1361
   383
extern VideoBootStrap OS2FSLib_bootstrap;
slouken@1361
   384
#endif
hfutrell@2742
   385
#if SDL_VIDEO_DRIVER_UIKIT
hfutrell@2742
   386
extern VideoBootStrap UIKIT_bootstrap;
hfutrell@2742
   387
#endif
slouken@1361
   388
#if SDL_VIDEO_DRIVER_DUMMY
slouken@173
   389
extern VideoBootStrap DUMMY_bootstrap;
slouken@173
   390
#endif
slouken@2735
   391
#if SDL_VIDEO_DRIVER_NDS
slouken@2735
   392
extern VideoBootStrap NDS_bootstrap;
slouken@2735
   393
#endif
slouken@1361
   394
slouken@1895
   395
#define SDL_CurrentDisplay	(_this->displays[_this->current_display])
slouken@0
   396
slouken@1895
   397
extern SDL_VideoDevice *SDL_GetVideoDevice();
slouken@2753
   398
extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode);
slouken@2753
   399
extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display);
slouken@2753
   400
extern SDL_bool
slouken@2753
   401
SDL_AddDisplayMode(int displayIndex, const SDL_DisplayMode * mode);
slouken@2753
   402
extern void
slouken@2753
   403
SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver);
slouken@1895
   404
slouken@2753
   405
extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags);
slouken@1895
   406
extern SDL_Window *SDL_GetWindowFromID(SDL_WindowID windowID);
slouken@1895
   407
extern SDL_VideoDisplay *SDL_GetDisplayFromWindow(SDL_Window * window);
slouken@1895
   408
slouken@2753
   409
extern void SDL_OnWindowShown(SDL_Window * window);
slouken@2753
   410
extern void SDL_OnWindowHidden(SDL_Window * window);
slouken@2753
   411
extern void SDL_OnWindowResized(SDL_Window * window);
slouken@2753
   412
extern void SDL_OnWindowFocusGained(SDL_Window * window);
slouken@2753
   413
extern void SDL_OnWindowFocusLost(SDL_Window * window);
slouken@1895
   414
extern SDL_WindowID SDL_GetFocusWindow(void);
slouken@0
   415
slouken@2753
   416
#endif /* _SDL_sysvideo_h */
slouken@1895
   417
slouken@1895
   418
/* vi: set ts=4 sw=4 expandtab: */