src/video/SDL_sysvideo.h
author Sam Lantinga <slouken@libsdl.org>
Tue, 24 Mar 2009 10:43:53 +0000
changeset 3100 7dc982143c06
parent 3083 0bc41e0361d3
child 3130 fef1a835af43
child 3141 3df74541339b
child 3161 494559cc723b
permissions -rw-r--r--
Date: Sun, 22 Mar 2009 12:52:29 +0000
From: Luke Benstead
Subject: OpenGL 3.0 Context Creation

I've attached a patch which implements OpenGL 3.x context creation on
the latest SVN. I've added two options to SDL_GL_SetAttribute, these
are SDL_GL_CONTEXT_MAJOR_VERSION and SDL_GL_CONTEXT_MINOR_VERSION.
These default to 2 and 1 respectively. If the major version is less
than 3 then the current context creation method is used, otherwise the
appropriate new context creation function is called (depending on the
platform).

Sample code:

if (SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("Unable to initialize SDL: %s\n", SDL_GetError());
return 1;
}

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); //Without these 2 lines, SDL will create a GL 2.x context
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);

SDL_Surface* screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL | SDL_FULLSCREEN );


I've implemented context creation on both Win32 and X and run basic
tests on both. This patch doesn't provide access to all the options
allowed by the new context creation (e.g. shared contexts, forward
compatible contexts) but they can be added pretty easily.
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@2901
    93
    int (*RenderPoint) (SDL_Renderer * renderer, int x, int y);
slouken@2884
    94
    int (*RenderLine) (SDL_Renderer * renderer, int x1, int y1, int x2,
slouken@2884
    95
                       int y2);
slouken@2884
    96
    int (*RenderFill) (SDL_Renderer * renderer, const SDL_Rect * rect);
slouken@2753
    97
    int (*RenderCopy) (SDL_Renderer * renderer, SDL_Texture * texture,
slouken@2753
    98
                       const SDL_Rect * srcrect, const SDL_Rect * dstrect);
slouken@2753
    99
    void (*RenderPresent) (SDL_Renderer * renderer);
slouken@2753
   100
    void (*DestroyTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
slouken@1895
   101
slouken@2753
   102
    void (*DestroyRenderer) (SDL_Renderer * renderer);
slouken@1895
   103
slouken@2753
   104
    /* The current renderer info */
slouken@2753
   105
    SDL_RendererInfo info;
slouken@1895
   106
slouken@2753
   107
    /* The window associated with the renderer */
slouken@2753
   108
    SDL_WindowID window;
slouken@1895
   109
slouken@2884
   110
    Uint8 r, g, b, a;                   /**< Color for drawing operations values */
slouken@2884
   111
    int blendMode;                      /**< The drawing blend mode */
slouken@2884
   112
slouken@2753
   113
    void *driverdata;
slouken@1895
   114
};
slouken@1895
   115
slouken@1895
   116
/* Define the SDL render driver structure */
slouken@2753
   117
struct SDL_RenderDriver
slouken@2753
   118
{
slouken@2753
   119
    SDL_Renderer *(*CreateRenderer) (SDL_Window * window, Uint32 flags);
slouken@1895
   120
slouken@2753
   121
    /* Info about the renderer capabilities */
slouken@2753
   122
    SDL_RendererInfo info;
slouken@1895
   123
};
slouken@1895
   124
slouken@1895
   125
/* Define the SDL window structure, corresponding to toplevel windows */
slouken@2753
   126
struct SDL_Window
slouken@2753
   127
{
slouken@2753
   128
    Uint32 id;
slouken@1895
   129
slouken@2753
   130
    char *title;
slouken@2753
   131
    int x, y;
slouken@2753
   132
    int w, h;
slouken@2753
   133
    Uint32 flags;
slouken@1895
   134
slouken@2753
   135
    int display;
slouken@2753
   136
    SDL_Renderer *renderer;
slouken@1895
   137
slouken@2753
   138
    void *userdata;
slouken@2753
   139
    void *driverdata;
slouken@1895
   140
};
slouken@1895
   141
#define FULLSCREEN_VISIBLE(W) \
slouken@1895
   142
    (((W)->flags & SDL_WINDOW_FULLSCREEN) && \
slouken@1895
   143
     ((W)->flags & SDL_WINDOW_SHOWN) && \
slouken@1895
   144
     !((W)->flags & SDL_WINDOW_MINIMIZED))
slouken@1895
   145
hfutrell@2742
   146
/*
hfutrell@2742
   147
 * Define the SDL display structure This corresponds to physical monitors
hfutrell@2742
   148
 * attached to the system.
slouken@1895
   149
 */
slouken@2753
   150
struct SDL_VideoDisplay
slouken@2753
   151
{
slouken@2753
   152
    int max_display_modes;
slouken@2753
   153
    int num_display_modes;
slouken@2753
   154
    SDL_DisplayMode *display_modes;
slouken@2753
   155
    SDL_DisplayMode desktop_mode;
slouken@2753
   156
    SDL_DisplayMode current_mode;
slouken@2753
   157
    SDL_DisplayMode fullscreen_mode;
slouken@2753
   158
    SDL_Palette *palette;
slouken@1895
   159
slouken@2753
   160
    Uint16 *gamma;
slouken@2753
   161
    Uint16 *saved_gamma;        /* (just offset into gamma) */
slouken@1895
   162
slouken@2753
   163
    int num_render_drivers;
slouken@2753
   164
    SDL_RenderDriver *render_drivers;
slouken@1895
   165
slouken@2753
   166
    int num_windows;
slouken@2753
   167
    SDL_Window *windows;
slouken@1895
   168
slouken@2753
   169
    SDL_Renderer *current_renderer;
slouken@1895
   170
slouken@2753
   171
    /* The hash list of textures */
slouken@2753
   172
    SDL_Texture *textures[64];
slouken@1895
   173
slouken@2753
   174
    SDL_VideoDevice *device;
slouken@1895
   175
slouken@2753
   176
    void *driverdata;
slouken@1895
   177
};
slouken@1895
   178
slouken@0
   179
/* Define the SDL video driver structure */
slouken@0
   180
#define _THIS	SDL_VideoDevice *_this
slouken@0
   181
slouken@2753
   182
struct SDL_VideoDevice
slouken@2753
   183
{
slouken@2753
   184
    /* * * */
slouken@2753
   185
    /* The name of this video driver */
slouken@2753
   186
    const char *name;
slouken@0
   187
slouken@2753
   188
    /* * * */
slouken@2753
   189
    /* Initialization/Query functions */
slouken@0
   190
slouken@2753
   191
    /*
slouken@2753
   192
     * Initialize the native video subsystem, filling in the list of
slouken@2753
   193
     * displays for this driver, returning 0 or -1 if there's an error.
slouken@2753
   194
     */
slouken@2753
   195
    int (*VideoInit) (_THIS);
slouken@0
   196
slouken@2753
   197
    /*
slouken@2753
   198
     * Reverse the effects VideoInit() -- called if VideoInit() fails or
slouken@2753
   199
     * if the application is shutting down the video subsystem.
slouken@2753
   200
     */
slouken@2753
   201
    void (*VideoQuit) (_THIS);
slouken@1913
   202
slouken@2753
   203
    /* * * */
slouken@2753
   204
    /*
slouken@2753
   205
     * Display functions
slouken@2753
   206
     */
slouken@0
   207
slouken@2753
   208
    /*
slouken@2753
   209
     * Get a list of the available display modes. e.g.
slouken@2753
   210
     * SDL_AddDisplayMode(_this->current_display, mode)
slouken@2753
   211
     */
slouken@2753
   212
    void (*GetDisplayModes) (_THIS);
slouken@0
   213
slouken@2753
   214
    /*
slouken@2753
   215
     * Setting the display mode is independent of creating windows, so
slouken@2753
   216
     * when the display mode is changed, all existing windows should have
slouken@2753
   217
     * their data updated accordingly, including the display surfaces
slouken@2753
   218
     * associated with them.
slouken@2753
   219
     */
slouken@2753
   220
    int (*SetDisplayMode) (_THIS, SDL_DisplayMode * mode);
slouken@0
   221
slouken@2753
   222
    /* Set the color entries of the display palette */
slouken@2753
   223
    int (*SetDisplayPalette) (_THIS, SDL_Palette * palette);
slouken@0
   224
slouken@2753
   225
    /* Get the color entries of the display palette */
slouken@2753
   226
    int (*GetDisplayPalette) (_THIS, SDL_Palette * palette);
slouken@0
   227
slouken@2753
   228
    /* Set the gamma ramp */
slouken@2753
   229
    int (*SetDisplayGammaRamp) (_THIS, Uint16 * ramp);
slouken@0
   230
slouken@2753
   231
    /* Get the gamma ramp */
slouken@2753
   232
    int (*GetDisplayGammaRamp) (_THIS, Uint16 * ramp);
slouken@0
   233
slouken@2753
   234
    /* * * */
slouken@2753
   235
    /*
slouken@2753
   236
     * Window functions
slouken@2753
   237
     */
slouken@2753
   238
    int (*CreateWindow) (_THIS, SDL_Window * window);
slouken@2753
   239
    int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data);
slouken@2753
   240
    void (*SetWindowTitle) (_THIS, SDL_Window * window);
slouken@2967
   241
    void (*SetWindowIcon) (_THIS, SDL_Window * window, SDL_Surface * icon);
slouken@2753
   242
    void (*SetWindowPosition) (_THIS, SDL_Window * window);
slouken@2753
   243
    void (*SetWindowSize) (_THIS, SDL_Window * window);
slouken@2753
   244
    void (*ShowWindow) (_THIS, SDL_Window * window);
slouken@2753
   245
    void (*HideWindow) (_THIS, SDL_Window * window);
slouken@2753
   246
    void (*RaiseWindow) (_THIS, SDL_Window * window);
slouken@2753
   247
    void (*MaximizeWindow) (_THIS, SDL_Window * window);
slouken@2753
   248
    void (*MinimizeWindow) (_THIS, SDL_Window * window);
slouken@2753
   249
    void (*RestoreWindow) (_THIS, SDL_Window * window);
slouken@2753
   250
    void (*SetWindowGrab) (_THIS, SDL_Window * window);
slouken@2753
   251
    void (*DestroyWindow) (_THIS, SDL_Window * window);
slouken@0
   252
slouken@2753
   253
    /* Get some platform dependent window information */
slouken@2753
   254
      SDL_bool(*GetWindowWMInfo) (_THIS, SDL_Window * window,
slouken@2753
   255
                                  struct SDL_SysWMinfo * info);
slouken@0
   256
slouken@2753
   257
    /* * * */
slouken@2753
   258
    /*
slouken@2753
   259
     * OpenGL support
slouken@2753
   260
     */
slouken@2753
   261
    int (*GL_LoadLibrary) (_THIS, const char *path);
slouken@2753
   262
    void *(*GL_GetProcAddress) (_THIS, const char *proc);
slouken@3057
   263
    void (*GL_UnloadLibrary) (_THIS);
slouken@2753
   264
      SDL_GLContext(*GL_CreateContext) (_THIS, SDL_Window * window);
slouken@2753
   265
    int (*GL_MakeCurrent) (_THIS, SDL_Window * window, SDL_GLContext context);
slouken@2753
   266
    int (*GL_SetSwapInterval) (_THIS, int interval);
slouken@2753
   267
    int (*GL_GetSwapInterval) (_THIS);
slouken@2753
   268
    void (*GL_SwapWindow) (_THIS, SDL_Window * window);
slouken@2753
   269
    void (*GL_DeleteContext) (_THIS, SDL_GLContext context);
slouken@0
   270
slouken@2753
   271
    /* * * */
slouken@2753
   272
    /*
slouken@2753
   273
     * Event manager functions
slouken@2753
   274
     */
slouken@2753
   275
    void (*PumpEvents) (_THIS);
slouken@0
   276
slouken@3025
   277
    /* Suspend the screensaver */
slouken@3025
   278
    void (*SuspendScreenSaver) (_THIS);
slouken@3025
   279
slouken@2753
   280
    /* * * */
slouken@2753
   281
    /* Data common to all drivers */
slouken@3025
   282
    SDL_bool suspend_screensaver;
slouken@2753
   283
    int num_displays;
slouken@2753
   284
    SDL_VideoDisplay *displays;
slouken@2753
   285
    int current_display;
slouken@2753
   286
    Uint32 next_object_id;
slouken@0
   287
slouken@2753
   288
    /* * * */
slouken@2753
   289
    /* Data used by the GL drivers */
slouken@2753
   290
    struct
slouken@2753
   291
    {
slouken@2753
   292
        int red_size;
slouken@2753
   293
        int green_size;
slouken@2753
   294
        int blue_size;
slouken@2753
   295
        int alpha_size;
slouken@2753
   296
        int depth_size;
slouken@2753
   297
        int buffer_size;
slouken@2753
   298
        int stencil_size;
slouken@2753
   299
        int double_buffer;
slouken@2753
   300
        int accum_red_size;
slouken@2753
   301
        int accum_green_size;
slouken@2753
   302
        int accum_blue_size;
slouken@2753
   303
        int accum_alpha_size;
slouken@2753
   304
        int stereo;
slouken@2753
   305
        int multisamplebuffers;
slouken@2753
   306
        int multisamplesamples;
slouken@2753
   307
        int accelerated;
slouken@3100
   308
        int major_version;
slouken@3100
   309
        int minor_version;
slouken@2753
   310
        int retained_backing;
slouken@2753
   311
        int driver_loaded;
slouken@2753
   312
        char driver_path[256];
slouken@2753
   313
        void *dll_handle;
slouken@2753
   314
    } gl_config;
slouken@0
   315
slouken@2753
   316
    /* * * */
slouken@2753
   317
    /* Data private to this driver */
slouken@2753
   318
    void *driverdata;
slouken@2753
   319
    struct SDL_GLDriverData *gl_data;
slouken@0
   320
slouken@2753
   321
    /* * * */
slouken@2753
   322
    /* The function used to dispose of this structure */
slouken@2753
   323
    void (*free) (_THIS);
slouken@1895
   324
};
slouken@0
   325
slouken@2753
   326
typedef struct VideoBootStrap
slouken@2753
   327
{
slouken@2753
   328
    const char *name;
slouken@2753
   329
    const char *desc;
slouken@2753
   330
    int (*available) (void);
slouken@2753
   331
    SDL_VideoDevice *(*create) (int devindex);
slouken@2753
   332
} VideoBootStrap;
slouken@0
   333
slouken@1931
   334
#if SDL_VIDEO_DRIVER_COCOA
slouken@1931
   335
extern VideoBootStrap COCOA_bootstrap;
slouken@1361
   336
#endif
slouken@1361
   337
#if SDL_VIDEO_DRIVER_X11
slouken@0
   338
extern VideoBootStrap X11_bootstrap;
slouken@0
   339
#endif
slouken@1361
   340
#if SDL_VIDEO_DRIVER_NANOX
slouken@30
   341
extern VideoBootStrap NX_bootstrap;
slouken@30
   342
#endif
slouken@1361
   343
#if SDL_VIDEO_DRIVER_IPOD
icculus@1140
   344
extern VideoBootStrap iPod_bootstrap;
icculus@1140
   345
#endif
slouken@1361
   346
#if SDL_VIDEO_DRIVER_WSCONS
slouken@1361
   347
extern VideoBootStrap WSCONS_bootstrap;
slouken@1361
   348
#endif
slouken@1361
   349
#if SDL_VIDEO_DRIVER_FBCON
slouken@0
   350
extern VideoBootStrap FBCON_bootstrap;
slouken@0
   351
#endif
slouken@1361
   352
#if SDL_VIDEO_DRIVER_DIRECTFB
slouken@167
   353
extern VideoBootStrap DirectFB_bootstrap;
slouken@167
   354
#endif
slouken@1361
   355
#if SDL_VIDEO_DRIVER_PS2GS
slouken@0
   356
extern VideoBootStrap PS2GS_bootstrap;
slouken@0
   357
#endif
slouken@1361
   358
#if SDL_VIDEO_DRIVER_VGL
slouken@75
   359
extern VideoBootStrap VGL_bootstrap;
slouken@75
   360
#endif
slouken@1361
   361
#if SDL_VIDEO_DRIVER_SVGALIB
slouken@0
   362
extern VideoBootStrap SVGALIB_bootstrap;
slouken@0
   363
#endif
slouken@1361
   364
#if SDL_VIDEO_DRIVER_GAPI
slouken@1361
   365
extern VideoBootStrap GAPI_bootstrap;
slouken@1361
   366
#endif
slouken@1895
   367
#if SDL_VIDEO_DRIVER_WIN32
slouken@1895
   368
extern VideoBootStrap WIN32_bootstrap;
slouken@1361
   369
#endif
slouken@1361
   370
#if SDL_VIDEO_DRIVER_BWINDOW
slouken@1361
   371
extern VideoBootStrap BWINDOW_bootstrap;
slouken@1361
   372
#endif
slouken@1361
   373
#if SDL_VIDEO_DRIVER_PHOTON
slouken@3083
   374
extern VideoBootStrap photon_bootstrap;
slouken@3083
   375
#endif
slouken@3083
   376
#if SDL_VIDEO_DRIVER_QNXGF
slouken@3083
   377
extern VideoBootStrap qnxgf_bootstrap;
slouken@1361
   378
#endif
slouken@1361
   379
#if SDL_VIDEO_DRIVER_EPOC
slouken@1361
   380
extern VideoBootStrap EPOC_bootstrap;
slouken@1361
   381
#endif
slouken@1361
   382
#if SDL_VIDEO_DRIVER_XBIOS
slouken@1361
   383
extern VideoBootStrap XBIOS_bootstrap;
slouken@1361
   384
#endif
slouken@1361
   385
#if SDL_VIDEO_DRIVER_GEM
slouken@1361
   386
extern VideoBootStrap GEM_bootstrap;
slouken@1361
   387
#endif
slouken@1361
   388
#if SDL_VIDEO_DRIVER_DC
slouken@1361
   389
extern VideoBootStrap DC_bootstrap;
slouken@1361
   390
#endif
slouken@1361
   391
#if SDL_VIDEO_DRIVER_RISCOS
slouken@1361
   392
extern VideoBootStrap RISCOS_bootstrap;
slouken@1361
   393
#endif
slouken@1361
   394
#if SDL_VIDEO_DRIVER_OS2FS
slouken@1361
   395
extern VideoBootStrap OS2FSLib_bootstrap;
slouken@1361
   396
#endif
hfutrell@2742
   397
#if SDL_VIDEO_DRIVER_UIKIT
hfutrell@2742
   398
extern VideoBootStrap UIKIT_bootstrap;
hfutrell@2742
   399
#endif
slouken@1361
   400
#if SDL_VIDEO_DRIVER_DUMMY
slouken@173
   401
extern VideoBootStrap DUMMY_bootstrap;
slouken@173
   402
#endif
slouken@2735
   403
#if SDL_VIDEO_DRIVER_NDS
slouken@2735
   404
extern VideoBootStrap NDS_bootstrap;
slouken@2735
   405
#endif
slouken@1361
   406
slouken@1895
   407
#define SDL_CurrentDisplay	(_this->displays[_this->current_display])
slouken@0
   408
slouken@1895
   409
extern SDL_VideoDevice *SDL_GetVideoDevice();
slouken@2753
   410
extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode);
slouken@2753
   411
extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display);
slouken@2753
   412
extern SDL_bool
slouken@2753
   413
SDL_AddDisplayMode(int displayIndex, const SDL_DisplayMode * mode);
slouken@2753
   414
extern void
slouken@2753
   415
SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver);
slouken@1895
   416
slouken@2753
   417
extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags);
slouken@1895
   418
extern SDL_Window *SDL_GetWindowFromID(SDL_WindowID windowID);
slouken@1895
   419
extern SDL_VideoDisplay *SDL_GetDisplayFromWindow(SDL_Window * window);
slouken@1895
   420
slouken@2753
   421
extern void SDL_OnWindowShown(SDL_Window * window);
slouken@2753
   422
extern void SDL_OnWindowHidden(SDL_Window * window);
slouken@2753
   423
extern void SDL_OnWindowResized(SDL_Window * window);
slouken@2753
   424
extern void SDL_OnWindowFocusGained(SDL_Window * window);
slouken@2753
   425
extern void SDL_OnWindowFocusLost(SDL_Window * window);
slouken@1895
   426
extern SDL_WindowID SDL_GetFocusWindow(void);
slouken@0
   427
slouken@2753
   428
#endif /* _SDL_sysvideo_h */
slouken@1895
   429
slouken@1895
   430
/* vi: set ts=4 sw=4 expandtab: */