comparison src/video/dummy/SDL_nullrender.c @ 3685:64ce267332c6

Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
author Sam Lantinga <slouken@libsdl.org>
date Thu, 21 Jan 2010 06:21:52 +0000
parents f638ded38b8a
children f7b03b6838cb
comparison
equal deleted inserted replaced
3684:cc564f08884f 3685:64ce267332c6
72 } SDL_DUMMY_RenderData; 72 } SDL_DUMMY_RenderData;
73 73
74 SDL_Renderer * 74 SDL_Renderer *
75 SDL_DUMMY_CreateRenderer(SDL_Window * window, Uint32 flags) 75 SDL_DUMMY_CreateRenderer(SDL_Window * window, Uint32 flags)
76 { 76 {
77 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); 77 SDL_VideoDisplay *display = window->display;
78 SDL_DisplayMode *displayMode = &display->current_mode; 78 SDL_DisplayMode *displayMode = &display->current_mode;
79 SDL_Renderer *renderer; 79 SDL_Renderer *renderer;
80 SDL_DUMMY_RenderData *data; 80 SDL_DUMMY_RenderData *data;
81 int i, n; 81 int i, n;
82 int bpp; 82 int bpp;
111 renderer->RenderWritePixels = SDL_DUMMY_RenderWritePixels; 111 renderer->RenderWritePixels = SDL_DUMMY_RenderWritePixels;
112 renderer->RenderPresent = SDL_DUMMY_RenderPresent; 112 renderer->RenderPresent = SDL_DUMMY_RenderPresent;
113 renderer->DestroyRenderer = SDL_DUMMY_DestroyRenderer; 113 renderer->DestroyRenderer = SDL_DUMMY_DestroyRenderer;
114 renderer->info.name = SDL_DUMMY_RenderDriver.info.name; 114 renderer->info.name = SDL_DUMMY_RenderDriver.info.name;
115 renderer->info.flags = 0; 115 renderer->info.flags = 0;
116 renderer->window = window->id; 116 renderer->window = window;
117 renderer->driverdata = data; 117 renderer->driverdata = data;
118 Setup_SoftwareRenderer(renderer); 118 Setup_SoftwareRenderer(renderer);
119 119
120 if (flags & SDL_RENDERER_PRESENTFLIP2) { 120 if (flags & SDL_RENDERER_PRESENTFLIP2) {
121 renderer->info.flags |= SDL_RENDERER_PRESENTFLIP2; 121 renderer->info.flags |= SDL_RENDERER_PRESENTFLIP2;
236 SDL_DUMMY_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, 236 SDL_DUMMY_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture,
237 const SDL_Rect * srcrect, const SDL_Rect * dstrect) 237 const SDL_Rect * srcrect, const SDL_Rect * dstrect)
238 { 238 {
239 SDL_DUMMY_RenderData *data = 239 SDL_DUMMY_RenderData *data =
240 (SDL_DUMMY_RenderData *) renderer->driverdata; 240 (SDL_DUMMY_RenderData *) renderer->driverdata;
241 SDL_Window *window = SDL_GetWindowFromID(renderer->window); 241 SDL_Window *window = renderer->window;
242 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); 242 SDL_VideoDisplay *display = window->display;
243 243
244 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) { 244 if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) {
245 SDL_Surface *target = data->screens[data->current_screen]; 245 SDL_Surface *target = data->screens[data->current_screen];
246 void *pixels = 246 void *pixels =
247 (Uint8 *) target->pixels + dstrect->y * target->pitch + 247 (Uint8 *) target->pixels + dstrect->y * target->pitch +
264 SDL_DUMMY_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, 264 SDL_DUMMY_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect,
265 Uint32 format, void * pixels, int pitch) 265 Uint32 format, void * pixels, int pitch)
266 { 266 {
267 SDL_DUMMY_RenderData *data = 267 SDL_DUMMY_RenderData *data =
268 (SDL_DUMMY_RenderData *) renderer->driverdata; 268 (SDL_DUMMY_RenderData *) renderer->driverdata;
269 SDL_Window *window = SDL_GetWindowFromID(renderer->window); 269 SDL_Window *window = renderer->window;
270 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); 270 SDL_VideoDisplay *display = window->display;
271 SDL_Surface *screen = data->screens[data->current_screen]; 271 SDL_Surface *screen = data->screens[data->current_screen];
272 Uint32 screen_format = display->current_mode.format; 272 Uint32 screen_format = display->current_mode.format;
273 Uint8 *screen_pixels = (Uint8 *) screen->pixels + 273 Uint8 *screen_pixels = (Uint8 *) screen->pixels +
274 rect->y * screen->pitch + 274 rect->y * screen->pitch +
275 rect->x * screen->format->BytesPerPixel; 275 rect->x * screen->format->BytesPerPixel;
284 SDL_DUMMY_RenderWritePixels(SDL_Renderer * renderer, const SDL_Rect * rect, 284 SDL_DUMMY_RenderWritePixels(SDL_Renderer * renderer, const SDL_Rect * rect,
285 Uint32 format, const void * pixels, int pitch) 285 Uint32 format, const void * pixels, int pitch)
286 { 286 {
287 SDL_DUMMY_RenderData *data = 287 SDL_DUMMY_RenderData *data =
288 (SDL_DUMMY_RenderData *) renderer->driverdata; 288 (SDL_DUMMY_RenderData *) renderer->driverdata;
289 SDL_Window *window = SDL_GetWindowFromID(renderer->window); 289 SDL_Window *window = renderer->window;
290 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); 290 SDL_VideoDisplay *display = window->display;
291 SDL_Surface *screen = data->screens[data->current_screen]; 291 SDL_Surface *screen = data->screens[data->current_screen];
292 Uint32 screen_format = display->current_mode.format; 292 Uint32 screen_format = display->current_mode.format;
293 Uint8 *screen_pixels = (Uint8 *) screen->pixels + 293 Uint8 *screen_pixels = (Uint8 *) screen->pixels +
294 rect->y * screen->pitch + 294 rect->y * screen->pitch +
295 rect->x * screen->format->BytesPerPixel; 295 rect->x * screen->format->BytesPerPixel;
309 309
310 /* Send the data to the display */ 310 /* Send the data to the display */
311 if (SDL_getenv("SDL_VIDEO_DUMMY_SAVE_FRAMES")) { 311 if (SDL_getenv("SDL_VIDEO_DUMMY_SAVE_FRAMES")) {
312 char file[128]; 312 char file[128];
313 SDL_snprintf(file, sizeof(file), "SDL_window%d-%8.8d.bmp", 313 SDL_snprintf(file, sizeof(file), "SDL_window%d-%8.8d.bmp",
314 renderer->window, ++frame_number); 314 renderer->window->id, ++frame_number);
315 SDL_SaveBMP(data->screens[data->current_screen], file); 315 SDL_SaveBMP(data->screens[data->current_screen], file);
316 } 316 }
317 317
318 /* Update the flipping chain, if any */ 318 /* Update the flipping chain, if any */
319 if (renderer->info.flags & SDL_RENDERER_PRESENTFLIP2) { 319 if (renderer->info.flags & SDL_RENDERER_PRESENTFLIP2) {