comparison src/video/SDL_sysvideo.h @ 5150:ad50b3db78bd

The rendering functions take a context so it's clear what window they're drawing to. This also potentially opens to the door to multi-threaded rendering in the future.
author Sam Lantinga <slouken@libsdl.org>
date Tue, 01 Feb 2011 19:19:43 -0800
parents 2f44e6969a59
children 5429daf5e3f9
comparison
equal deleted inserted replaced
5149:3052772b59db 5150:ad50b3db78bd
22 #include "SDL_config.h" 22 #include "SDL_config.h"
23 23
24 #ifndef _SDL_sysvideo_h 24 #ifndef _SDL_sysvideo_h
25 #define _SDL_sysvideo_h 25 #define _SDL_sysvideo_h
26 26
27 #include "SDL_events.h"
27 #include "SDL_mouse.h" 28 #include "SDL_mouse.h"
28 #include "SDL_keysym.h" 29 #include "SDL_keysym.h"
29 #include "SDL_render.h" 30 #include "SDL_render.h"
30 #include "SDL_shape.h" 31 #include "SDL_shape.h"
31 32
32 /* The SDL video driver */ 33 /* The SDL video driver */
33 34
34 typedef struct SDL_Renderer SDL_Renderer;
35 typedef struct SDL_RenderDriver SDL_RenderDriver; 35 typedef struct SDL_RenderDriver SDL_RenderDriver;
36 typedef struct SDL_WindowShaper SDL_WindowShaper; 36 typedef struct SDL_WindowShaper SDL_WindowShaper;
37 typedef struct SDL_ShapeDriver SDL_ShapeDriver; 37 typedef struct SDL_ShapeDriver SDL_ShapeDriver;
38 typedef struct SDL_VideoDisplay SDL_VideoDisplay; 38 typedef struct SDL_VideoDisplay SDL_VideoDisplay;
39 typedef struct SDL_VideoDevice SDL_VideoDevice; 39 typedef struct SDL_VideoDevice SDL_VideoDevice;
59 }; 59 };
60 60
61 /* Define the SDL renderer structure */ 61 /* Define the SDL renderer structure */
62 struct SDL_Renderer 62 struct SDL_Renderer
63 { 63 {
64 int (*ActivateRenderer) (SDL_Renderer * renderer); 64 const void *magic;
65 int (*DisplayModeChanged) (SDL_Renderer * renderer); 65
66 void (*WindowEvent) (SDL_Renderer * renderer, const SDL_WindowEvent *event);
66 int (*CreateTexture) (SDL_Renderer * renderer, SDL_Texture * texture); 67 int (*CreateTexture) (SDL_Renderer * renderer, SDL_Texture * texture);
67 int (*QueryTexturePixels) (SDL_Renderer * renderer, SDL_Texture * texture, 68 int (*QueryTexturePixels) (SDL_Renderer * renderer, SDL_Texture * texture,
68 void **pixels, int *pitch); 69 void **pixels, int *pitch);
69 int (*SetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture, 70 int (*SetTexturePalette) (SDL_Renderer * renderer, SDL_Texture * texture,
70 const SDL_Color * colors, int firstcolor, 71 const SDL_Color * colors, int firstcolor,
166 int x, y; 167 int x, y;
167 int w, h; 168 int w, h;
168 Uint32 flags; 169 Uint32 flags;
169 170
170 SDL_VideoDisplay *display; 171 SDL_VideoDisplay *display;
171 SDL_Renderer *renderer;
172 172
173 SDL_DisplayMode fullscreen_mode; 173 SDL_DisplayMode fullscreen_mode;
174 174
175 SDL_WindowShaper *shaper; 175 SDL_WindowShaper *shaper;
176 176
205 int num_render_drivers; 205 int num_render_drivers;
206 SDL_RenderDriver *render_drivers; 206 SDL_RenderDriver *render_drivers;
207 207
208 SDL_Window *windows; 208 SDL_Window *windows;
209 SDL_Window *fullscreen_window; 209 SDL_Window *fullscreen_window;
210
211 SDL_Renderer *current_renderer;
212 210
213 SDL_VideoDevice *device; 211 SDL_VideoDevice *device;
214 212
215 void *driverdata; 213 void *driverdata;
216 }; 214 };
342 SDL_bool suspend_screensaver; 340 SDL_bool suspend_screensaver;
343 int num_displays; 341 int num_displays;
344 SDL_VideoDisplay *displays; 342 SDL_VideoDisplay *displays;
345 int current_display; 343 int current_display;
346 Uint8 window_magic; 344 Uint8 window_magic;
345 Uint8 renderer_magic;
347 Uint8 texture_magic; 346 Uint8 texture_magic;
348 Uint32 next_object_id; 347 Uint32 next_object_id;
349 char * clipboard_text; 348 char * clipboard_text;
350 349
351 /* * * */ 350 /* * * */
437 #if SDL_VIDEO_DRIVER_ANDROID 436 #if SDL_VIDEO_DRIVER_ANDROID
438 extern VideoBootStrap Android_bootstrap; 437 extern VideoBootStrap Android_bootstrap;
439 #endif 438 #endif
440 439
441 #define SDL_CurrentDisplay (&_this->displays[_this->current_display]) 440 #define SDL_CurrentDisplay (&_this->displays[_this->current_display])
442 #define SDL_CurrentRenderer (SDL_CurrentDisplay->current_renderer)
443 441
444 extern SDL_VideoDevice *SDL_GetVideoDevice(void); 442 extern SDL_VideoDevice *SDL_GetVideoDevice(void);
445 extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode); 443 extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode);
446 extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display); 444 extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display);
447 extern SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode * mode); 445 extern SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode * mode);
459 457
460 extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags); 458 extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags);
461 459
462 extern void SDL_OnWindowShown(SDL_Window * window); 460 extern void SDL_OnWindowShown(SDL_Window * window);
463 extern void SDL_OnWindowHidden(SDL_Window * window); 461 extern void SDL_OnWindowHidden(SDL_Window * window);
464 extern void SDL_OnWindowResized(SDL_Window * window);
465 extern void SDL_OnWindowMinimized(SDL_Window * window); 462 extern void SDL_OnWindowMinimized(SDL_Window * window);
466 extern void SDL_OnWindowRestored(SDL_Window * window); 463 extern void SDL_OnWindowRestored(SDL_Window * window);
467 extern void SDL_OnWindowFocusGained(SDL_Window * window); 464 extern void SDL_OnWindowFocusGained(SDL_Window * window);
468 extern void SDL_OnWindowFocusLost(SDL_Window * window); 465 extern void SDL_OnWindowFocusLost(SDL_Window * window);
469 extern SDL_Window * SDL_GetFocusWindow(void); 466 extern SDL_Window * SDL_GetFocusWindow(void);