test/testwm2.c
author Sam Lantinga <slouken@libsdl.org>
Mon, 26 Jun 2006 13:56:56 +0000
branchSDL-1.3
changeset 1712 931d111e737a
child 1713 3e66ed1690e4
permissions -rw-r--r--
Started framework for Windows video driver
     1 /* Simple program:  Move N sprites around on the screen as fast as possible */
     2 
     3 #include "SDL.h"
     4 
     5 #define NUM_WINDOWS 2
     6 #define WINDOW_W    640
     7 #define WINDOW_H    480
     8 
     9 static int num_windows;
    10 static SDL_WindowID *windows;
    11 
    12 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
    13 static void
    14 quit(int rc)
    15 {
    16     if (windows) {
    17         SDL_free(windows);
    18     }
    19     SDL_Quit();
    20     exit(rc);
    21 }
    22 
    23 int
    24 main(int argc, char *argv[])
    25 {
    26     int window_w, window_h;
    27     int i, done;
    28     SDL_Event event;
    29 
    30     /* Initialize SDL */
    31     if (SDL_Init(SDL_INIT_VIDEO) < 0) {
    32         fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
    33         return (1);
    34     }
    35 
    36     num_windows = NUM_WINDOWS;
    37     window_w = WINDOW_W;
    38     window_h = WINDOW_H;
    39     while (argc > 1) {
    40         --argc;
    41         if (strcmp(argv[argc - 1], "-width") == 0) {
    42             window_w = atoi(argv[argc]);
    43             --argc;
    44         } else if (strcmp(argv[argc - 1], "-height") == 0) {
    45             window_h = atoi(argv[argc]);
    46             --argc;
    47         } else {
    48             fprintf(stderr,
    49                     "Usage: %s [-width] [-height]\n", argv[0]);
    50             quit(1);
    51         }
    52     }
    53 
    54     /* Set the desktop mode, we don't care what it is */
    55     if (SDL_SetDisplayMode(NULL) < 0) {
    56         fprintf(stderr, "Couldn't set display mode: %s\n", SDL_GetError());
    57         quit(2);
    58     }
    59 
    60     /* Create the windows */
    61     windows = (SDL_WindowID *) SDL_malloc(num_windows * sizeof(*windows));
    62     if (!windows) {
    63         fprintf(stderr, "Out of memory!\n");
    64         quit(2);
    65     }
    66     for (i = 0; i < num_windows; ++i) {
    67         char title[32];
    68 
    69         SDL_snprintf(title, sizeof(title), "testwm %d", i + 1);
    70         windows[i] =
    71             SDL_CreateWindow(title, -1, -1, window_w, window_h,
    72                              SDL_WINDOW_SHOWN);
    73         if (!windows[i]) {
    74             fprintf(stderr, "Couldn't create window: %s\n", SDL_GetError());
    75             quit(2);
    76         }
    77     }
    78 
    79     /* Loop, blitting sprites and waiting for a keystroke */
    80     done = 0;
    81     while (!done) {
    82         /* Check for events */
    83         while (SDL_PollEvent(&event)) {
    84             switch (event.type) {
    85             case SDL_KEYDOWN:
    86                 /* Any keypress quits the app... */
    87             case SDL_QUIT:
    88                 done = 1;
    89                 break;
    90             default:
    91                 break;
    92             }
    93         }
    94     }
    95 
    96     quit(0);
    97 }
    98 
    99 /* vi: set ts=4 sw=4 expandtab: */