8 #define BENCHMARK_SDL |
8 #define BENCHMARK_SDL |
9 |
9 |
10 #define NOTICE(X) printf("%s", X); |
10 #define NOTICE(X) printf("%s", X); |
11 |
11 |
12 #include "SDL.h" |
12 #include "SDL.h" |
|
13 |
|
14 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
|
15 static void quit(int rc) |
|
16 { |
|
17 SDL_Quit(); |
|
18 exit(rc); |
|
19 } |
13 |
20 |
14 void DrawPict(SDL_Surface *screen, char *bmpfile, |
21 void DrawPict(SDL_Surface *screen, char *bmpfile, |
15 int speedy, int flip, int nofade) |
22 int speedy, int flip, int nofade) |
16 { |
23 { |
17 SDL_Surface *picture; |
24 SDL_Surface *picture; |
262 argv += 2; |
276 argv += 2; |
263 argc -= 2; |
277 argc -= 2; |
264 } else { |
278 } else { |
265 fprintf(stderr, |
279 fprintf(stderr, |
266 "The -delay option requires an argument\n"); |
280 "The -delay option requires an argument\n"); |
267 exit(1); |
281 quit(1); |
268 } |
282 } |
269 } else |
283 } else |
270 if ( strcmp(argv[1], "-width") == 0 ) { |
284 if ( strcmp(argv[1], "-width") == 0 ) { |
271 if ( argv[2] && ((w = atoi(argv[2])) > 0) ) { |
285 if ( argv[2] && ((w = atoi(argv[2])) > 0) ) { |
272 argv += 2; |
286 argv += 2; |
273 argc -= 2; |
287 argc -= 2; |
274 } else { |
288 } else { |
275 fprintf(stderr, |
289 fprintf(stderr, |
276 "The -width option requires an argument\n"); |
290 "The -width option requires an argument\n"); |
277 exit(1); |
291 quit(1); |
278 } |
292 } |
279 } else |
293 } else |
280 if ( strcmp(argv[1], "-height") == 0 ) { |
294 if ( strcmp(argv[1], "-height") == 0 ) { |
281 if ( argv[2] && ((h = atoi(argv[2])) > 0) ) { |
295 if ( argv[2] && ((h = atoi(argv[2])) > 0) ) { |
282 argv += 2; |
296 argv += 2; |
283 argc -= 2; |
297 argc -= 2; |
284 } else { |
298 } else { |
285 fprintf(stderr, |
299 fprintf(stderr, |
286 "The -height option requires an argument\n"); |
300 "The -height option requires an argument\n"); |
287 exit(1); |
301 quit(1); |
288 } |
302 } |
289 } else |
303 } else |
290 if ( strcmp(argv[1], "-bpp") == 0 ) { |
304 if ( strcmp(argv[1], "-bpp") == 0 ) { |
291 if ( argv[2] ) { |
305 if ( argv[2] ) { |
292 desired_bpp = atoi(argv[2]); |
306 desired_bpp = atoi(argv[2]); |
293 argv += 2; |
307 argv += 2; |
294 argc -= 2; |
308 argc -= 2; |
295 } else { |
309 } else { |
296 fprintf(stderr, |
310 fprintf(stderr, |
297 "The -bpp option requires an argument\n"); |
311 "The -bpp option requires an argument\n"); |
298 exit(1); |
312 quit(1); |
299 } |
313 } |
300 } else |
314 } else |
301 if ( strcmp(argv[1], "-warp") == 0 ) { |
315 if ( strcmp(argv[1], "-warp") == 0 ) { |
302 video_flags |= SDL_HWPALETTE; |
316 video_flags |= SDL_HWPALETTE; |
303 argv += 1; |
317 argv += 1; |
318 argv += 1; |
332 argv += 1; |
319 argc -= 1; |
333 argc -= 1; |
320 } else |
334 } else |
321 break; |
335 break; |
322 } |
336 } |
323 |
|
324 if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { |
|
325 fprintf(stderr, |
|
326 "Couldn't initialize SDL: %s\n", SDL_GetError()); |
|
327 exit(1); |
|
328 } |
|
329 atexit(SDL_Quit); /* Clean up on exit */ |
|
330 |
337 |
331 /* Initialize the display */ |
338 /* Initialize the display */ |
332 screen = SDL_SetVideoMode(w, h, desired_bpp, video_flags); |
339 screen = SDL_SetVideoMode(w, h, desired_bpp, video_flags); |
333 if ( screen == NULL ) { |
340 if ( screen == NULL ) { |
334 fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", |
341 fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", |
335 w, h, desired_bpp, SDL_GetError()); |
342 w, h, desired_bpp, SDL_GetError()); |
336 exit(1); |
343 quit(1); |
337 } |
344 } |
338 printf("Set%s %dx%dx%d mode\n", |
345 printf("Set%s %dx%dx%d mode\n", |
339 screen->flags & SDL_FULLSCREEN ? " fullscreen" : "", |
346 screen->flags & SDL_FULLSCREEN ? " fullscreen" : "", |
340 screen->w, screen->h, screen->format->BitsPerPixel); |
347 screen->w, screen->h, screen->format->BitsPerPixel); |
341 printf("(video surface located in %s memory)\n", |
348 printf("(video surface located in %s memory)\n", |
356 printf("Time: %d milliseconds\n", now-then); |
363 printf("Time: %d milliseconds\n", now-then); |
357 #else |
364 #else |
358 DrawPict(screen, argv[1], speedy, flip, nofade); |
365 DrawPict(screen, argv[1], speedy, flip, nofade); |
359 #endif |
366 #endif |
360 SDL_Delay(delay*1000); |
367 SDL_Delay(delay*1000); |
|
368 SDL_Quit(); |
361 return(0); |
369 return(0); |
362 } |
370 } |