comparison test/testwm.c @ 1895:c121d94672cb

SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
author Sam Lantinga <slouken@libsdl.org>
date Mon, 10 Jul 2006 21:04:37 +0000
parents 67fc81efcfc3
children 866052b01ee5
comparison
equal deleted inserted replaced
1894:c69cee13dd76 1895:c121d94672cb
8 #include "SDL.h" 8 #include "SDL.h"
9 9
10 /* Is the cursor visible? */ 10 /* Is the cursor visible? */
11 static int visible = 1; 11 static int visible = 1;
12 12
13 static Uint8 video_bpp; 13 static Uint8 video_bpp;
14 static Uint32 video_flags; 14 static Uint32 video_flags;
15 15
16 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ 16 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */
17 static void quit(int rc) 17 static void
18 { 18 quit(int rc)
19 SDL_Quit(); 19 {
20 exit(rc); 20 SDL_Quit();
21 } 21 exit(rc);
22 22 }
23 int SetVideoMode(int w, int h) 23
24 { 24 int
25 SDL_Surface *screen; 25 SetVideoMode(int w, int h)
26 int i; 26 {
27 Uint8 *buffer; 27 SDL_Surface *screen;
28 SDL_Color palette[256]; 28 int i;
29 29 Uint8 *buffer;
30 screen = SDL_SetVideoMode(w, h, video_bpp, video_flags); 30 SDL_Color palette[256];
31 if ( screen == NULL ) { 31
32 fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", 32 screen = SDL_SetVideoMode(w, h, video_bpp, video_flags);
33 w, h, video_bpp, SDL_GetError()); 33 if (screen == NULL) {
34 return(-1); 34 fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n",
35 } 35 w, h, video_bpp, SDL_GetError());
36 printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ? 36 return (-1);
37 "fullscreen" : "windowed"); 37 }
38 38 printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ?
39 /* Set the surface pixels and refresh! */ 39 "fullscreen" : "windowed");
40 for ( i=0; i<256; ++i ) { 40
41 palette[i].r = 255-i; 41 /* Set the surface pixels and refresh! */
42 palette[i].g = 255-i; 42 for (i = 0; i < 256; ++i) {
43 palette[i].b = 255-i; 43 palette[i].r = 255 - i;
44 } 44 palette[i].g = 255 - i;
45 SDL_SetColors(screen, palette, 0, 256); 45 palette[i].b = 255 - i;
46 if ( SDL_LockSurface(screen) < 0 ) { 46 }
47 fprintf(stderr, "Couldn't lock display surface: %s\n", 47 SDL_SetColors(screen, palette, 0, 256);
48 SDL_GetError()); 48 if (SDL_LockSurface(screen) < 0) {
49 return(-1); 49 fprintf(stderr, "Couldn't lock display surface: %s\n",
50 } 50 SDL_GetError());
51 buffer = (Uint8 *)screen->pixels; 51 return (-1);
52 for ( i=0; i<screen->h; ++i ) { 52 }
53 memset(buffer,(i*255)/screen->h, 53 buffer = (Uint8 *) screen->pixels;
54 screen->w*screen->format->BytesPerPixel); 54 for (i = 0; i < screen->h; ++i) {
55 buffer += screen->pitch; 55 memset(buffer, (i * 255) / screen->h,
56 } 56 screen->w * screen->format->BytesPerPixel);
57 SDL_UnlockSurface(screen); 57 buffer += screen->pitch;
58 SDL_UpdateRect(screen, 0, 0, 0, 0); 58 }
59 59 SDL_UnlockSurface(screen);
60 return(0); 60 SDL_UpdateRect(screen, 0, 0, 0, 0);
61 } 61
62 62 return (0);
63 SDL_Surface *LoadIconSurface(char *file, Uint8 **maskp) 63 }
64 { 64
65 SDL_Surface *icon; 65 SDL_Surface *
66 Uint8 *pixels; 66 LoadIconSurface(char *file, Uint8 ** maskp)
67 Uint8 *mask; 67 {
68 int mlen, i, j; 68 SDL_Surface *icon;
69 69 Uint8 *pixels;
70 *maskp = NULL; 70 Uint8 *mask;
71 71 int mlen, i, j;
72 /* Load the icon surface */ 72
73 icon = SDL_LoadBMP(file); 73 *maskp = NULL;
74 if ( icon == NULL ) { 74
75 fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError()); 75 /* Load the icon surface */
76 return(NULL); 76 icon = SDL_LoadBMP(file);
77 } 77 if (icon == NULL) {
78 78 fprintf(stderr, "Couldn't load %s: %s\n", file, SDL_GetError());
79 /* Check width and height 79 return (NULL);
80 if ( (icon->w%8) != 0 ) { 80 }
81 fprintf(stderr, "Icon width must be a multiple of 8!\n"); 81
82 SDL_FreeSurface(icon); 82 /* Check width and height
83 return(NULL); 83 if ( (icon->w%8) != 0 ) {
84 } 84 fprintf(stderr, "Icon width must be a multiple of 8!\n");
85 */ 85 SDL_FreeSurface(icon);
86 86 return(NULL);
87 87 }
88 if ( icon->format->palette == NULL ) { 88 */
89 fprintf(stderr, "Icon must have a palette!\n"); 89
90 SDL_FreeSurface(icon); 90
91 return(NULL); 91 if (icon->format->palette == NULL) {
92 } 92 fprintf(stderr, "Icon must have a palette!\n");
93 93 SDL_FreeSurface(icon);
94 /* Set the colorkey */ 94 return (NULL);
95 SDL_SetColorKey(icon, SDL_SRCCOLORKEY, *((Uint8 *)icon->pixels)); 95 }
96 96
97 /* Create the mask */ 97 /* Set the colorkey */
98 pixels = (Uint8 *)icon->pixels; 98 SDL_SetColorKey(icon, SDL_SRCCOLORKEY, *((Uint8 *) icon->pixels));
99 printf("Transparent pixel: (%d,%d,%d)\n", 99
100 icon->format->palette->colors[*pixels].r, 100 /* Create the mask */
101 icon->format->palette->colors[*pixels].g, 101 pixels = (Uint8 *) icon->pixels;
102 icon->format->palette->colors[*pixels].b); 102 printf("Transparent pixel: (%d,%d,%d)\n",
103 mlen = (icon->w*icon->h + 7) / 8; 103 icon->format->palette->colors[*pixels].r,
104 mask = (Uint8 *)malloc(mlen); 104 icon->format->palette->colors[*pixels].g,
105 if ( mask == NULL ) { 105 icon->format->palette->colors[*pixels].b);
106 fprintf(stderr, "Out of memory!\n"); 106 mlen = (icon->w * icon->h + 7) / 8;
107 SDL_FreeSurface(icon); 107 mask = (Uint8 *) malloc(mlen);
108 return(NULL); 108 if (mask == NULL) {
109 } 109 fprintf(stderr, "Out of memory!\n");
110 memset(mask, 0, mlen); 110 SDL_FreeSurface(icon);
111 for ( i=0; i < icon->h; i++) 111 return (NULL);
112 for (j=0; j < icon->w; j++) { 112 }
113 memset(mask, 0, mlen);
114 for (i = 0; i < icon->h; i++)
115 for (j = 0; j < icon->w; j++) {
113 int pindex = i * icon->pitch + j; 116 int pindex = i * icon->pitch + j;
114 int mindex = i * icon->w + j; 117 int mindex = i * icon->w + j;
115 if ( pixels[pindex] != *pixels ) 118 if (pixels[pindex] != *pixels)
116 mask[mindex>>3] |= 1 << (7 - (mindex & 7)); 119 mask[mindex >> 3] |= 1 << (7 - (mindex & 7));
117 } 120 }
118 *maskp = mask; 121 *maskp = mask;
119 return(icon); 122 return (icon);
120 } 123 }
121 124
122 void HotKey_ToggleFullScreen(void) 125 void
123 { 126 HotKey_ToggleFullScreen(void)
124 SDL_Surface *screen; 127 {
125 128 SDL_Surface *screen;
126 screen = SDL_GetVideoSurface(); 129
127 if ( SDL_WM_ToggleFullScreen(screen) ) { 130 screen = SDL_GetVideoSurface();
128 printf("Toggled fullscreen mode - now %s\n", 131 if (SDL_WM_ToggleFullScreen(screen)) {
129 (screen->flags&SDL_FULLSCREEN) ? "fullscreen" : "windowed"); 132 printf("Toggled fullscreen mode - now %s\n",
130 } else { 133 (screen->flags & SDL_FULLSCREEN) ? "fullscreen" : "windowed");
131 printf("Unable to toggle fullscreen mode\n"); 134 } else {
132 video_flags ^= SDL_FULLSCREEN; 135 printf("Unable to toggle fullscreen mode\n");
133 SetVideoMode(screen->w, screen->h); 136 video_flags ^= SDL_FULLSCREEN;
134 } 137 SetVideoMode(screen->w, screen->h);
135 } 138 }
136 139 }
137 void HotKey_ToggleGrab(void) 140
138 { 141 void
139 SDL_GrabMode mode; 142 HotKey_ToggleGrab(void)
140 143 {
141 printf("Ctrl-G: toggling input grab!\n"); 144 SDL_GrabMode mode;
142 mode = SDL_WM_GrabInput(SDL_GRAB_QUERY); 145
143 if ( mode == SDL_GRAB_ON ) { 146 printf("Ctrl-G: toggling input grab!\n");
144 printf("Grab was on\n"); 147 mode = SDL_WM_GrabInput(SDL_GRAB_QUERY);
145 } else { 148 if (mode == SDL_GRAB_ON) {
146 printf("Grab was off\n"); 149 printf("Grab was on\n");
147 } 150 } else {
148 mode = SDL_WM_GrabInput(mode ? SDL_GRAB_OFF : SDL_GRAB_ON); 151 printf("Grab was off\n");
149 if ( mode == SDL_GRAB_ON ) { 152 }
150 printf("Grab is now on\n"); 153 mode = SDL_WM_GrabInput(mode ? SDL_GRAB_OFF : SDL_GRAB_ON);
151 } else { 154 if (mode == SDL_GRAB_ON) {
152 printf("Grab is now off\n"); 155 printf("Grab is now on\n");
153 } 156 } else {
154 } 157 printf("Grab is now off\n");
155 158 }
156 void HotKey_Iconify(void) 159 }
157 { 160
158 printf("Ctrl-Z: iconifying window!\n"); 161 void
159 SDL_WM_IconifyWindow(); 162 HotKey_Iconify(void)
160 } 163 {
161 164 printf("Ctrl-Z: iconifying window!\n");
162 void HotKey_Quit(void) 165 SDL_WM_IconifyWindow();
163 { 166 }
164 SDL_Event event; 167
165 168 void
166 printf("Posting internal quit request\n"); 169 HotKey_Quit(void)
167 event.type = SDL_USEREVENT; 170 {
168 SDL_PushEvent(&event); 171 SDL_Event event;
169 } 172
170 173 printf("Posting internal quit request\n");
171 int SDLCALL FilterEvents(const SDL_Event *event) 174 event.type = SDL_USEREVENT;
172 { 175 SDL_PushEvent(&event);
173 static int reallyquit = 0; 176 }
174 177
175 switch (event->type) { 178 static int SDLCALL(*old_filterfunc) (void *, SDL_Event *);
176 179 static void *old_filterdata;
177 case SDL_ACTIVEEVENT: 180
178 /* See what happened */ 181 int SDLCALL
179 printf("App %s ", 182 FilterEvents(void *userdata, SDL_Event * event)
180 event->active.gain ? "gained" : "lost"); 183 {
181 if ( event->active.state & SDL_APPACTIVE ) 184 static int reallyquit = 0;
182 printf("active "); 185
183 if ( event->active.state & SDL_APPINPUTFOCUS ) 186 if (old_filterfunc) {
184 printf("input "); 187 old_filterfunc(old_filterdata, event);
185 if ( event->active.state & SDL_APPMOUSEFOCUS ) 188 }
186 printf("mouse "); 189
187 printf("focus\n"); 190 switch (event->type) {
188 191
189 /* See if we are iconified or restored */ 192 case SDL_ACTIVEEVENT:
190 if ( event->active.state & SDL_APPACTIVE ) { 193 /* See what happened */
191 printf("App has been %s\n", 194 printf("App %s ", event->active.gain ? "gained" : "lost");
192 event->active.gain ? 195 if (event->active.state & SDL_APPACTIVE)
193 "restored" : "iconified"); 196 printf("active ");
194 } 197 if (event->active.state & SDL_APPINPUTFOCUS)
195 return(0); 198 printf("input ");
196 199 if (event->active.state & SDL_APPMOUSEFOCUS)
197 /* We want to toggle visibility on buttonpress */ 200 printf("mouse ");
198 case SDL_MOUSEBUTTONDOWN: 201 printf("focus\n");
199 case SDL_MOUSEBUTTONUP: 202
200 if ( event->button.state == SDL_PRESSED ) { 203 /* See if we are iconified or restored */
201 visible = !visible; 204 if (event->active.state & SDL_APPACTIVE) {
202 SDL_ShowCursor(visible); 205 printf("App has been %s\n",
203 } 206 event->active.gain ? "restored" : "iconified");
204 printf("Mouse button %d has been %s\n", 207 }
205 event->button.button, 208 return (0);
206 (event->button.state == SDL_PRESSED) ? 209
207 "pressed" : "released"); 210 /* We want to toggle visibility on buttonpress */
208 return(0); 211 case SDL_MOUSEBUTTONDOWN:
209 212 case SDL_MOUSEBUTTONUP:
210 /* Show relative mouse motion */ 213 if (event->button.state == SDL_PRESSED) {
211 case SDL_MOUSEMOTION: 214 visible = !visible;
215 SDL_ShowCursor(visible);
216 }
217 printf("Mouse button %d has been %s\n",
218 event->button.button,
219 (event->button.state == SDL_PRESSED) ? "pressed" : "released");
220 return (0);
221
222 /* Show relative mouse motion */
223 case SDL_MOUSEMOTION:
212 #if 0 224 #if 0
213 printf("Mouse motion: {%d,%d} (%d,%d)\n", 225 printf("Mouse motion: {%d,%d} (%d,%d)\n",
214 event->motion.x, event->motion.y, 226 event->motion.x, event->motion.y,
215 event->motion.xrel, event->motion.yrel); 227 event->motion.xrel, event->motion.yrel);
216 #endif 228 #endif
217 return(0); 229 return (0);
218 230
219 case SDL_KEYDOWN: 231 case SDL_KEYDOWN:
220 if ( event->key.keysym.sym == SDLK_ESCAPE ) { 232 if (event->key.keysym.sym == SDLK_ESCAPE) {
221 HotKey_Quit(); 233 HotKey_Quit();
222 } 234 }
223 if ( (event->key.keysym.sym == SDLK_g) && 235 if ((event->key.keysym.sym == SDLK_g) &&
224 (event->key.keysym.mod & KMOD_CTRL) ) { 236 (event->key.keysym.mod & KMOD_CTRL)) {
225 HotKey_ToggleGrab(); 237 HotKey_ToggleGrab();
226 } 238 }
227 if ( (event->key.keysym.sym == SDLK_z) && 239 if ((event->key.keysym.sym == SDLK_z) &&
228 (event->key.keysym.mod & KMOD_CTRL) ) { 240 (event->key.keysym.mod & KMOD_CTRL)) {
229 HotKey_Iconify(); 241 HotKey_Iconify();
230 } 242 }
231 if ( (event->key.keysym.sym == SDLK_RETURN) && 243 if ((event->key.keysym.sym == SDLK_RETURN) &&
232 (event->key.keysym.mod & KMOD_ALT) ) { 244 (event->key.keysym.mod & KMOD_ALT)) {
233 HotKey_ToggleFullScreen(); 245 HotKey_ToggleFullScreen();
234 } 246 }
235 return(0); 247 return (0);
236 248
237 /* Pass the video resize event through .. */ 249 /* Pass the video resize event through .. */
238 case SDL_VIDEORESIZE: 250 case SDL_VIDEORESIZE:
239 return(1); 251 return (1);
240 252
241 /* This is important! Queue it if we want to quit. */ 253 /* This is important! Queue it if we want to quit. */
242 case SDL_QUIT: 254 case SDL_QUIT:
243 if ( ! reallyquit ) { 255 if (!reallyquit) {
244 reallyquit = 1; 256 reallyquit = 1;
245 printf("Quit requested\n"); 257 printf("Quit requested\n");
246 return(0); 258 return (0);
247 } 259 }
248 printf("Quit demanded\n"); 260 printf("Quit demanded\n");
249 return(1); 261 return (1);
250 262
251 /* This will never happen because events queued directly 263 /* This will never happen because events queued directly
252 to the event queue are not filtered. 264 to the event queue are not filtered.
253 */ 265 */
254 case SDL_USEREVENT: 266 case SDL_USEREVENT:
255 return(1); 267 return (1);
256 268
257 /* Drop all other events */ 269 /* Drop all other events */
258 default: 270 default:
259 return(0); 271 return (0);
260 } 272 }
261 } 273 }
262 274
263 int main(int argc, char *argv[]) 275 int
264 { 276 main(int argc, char *argv[])
265 SDL_Event event; 277 {
266 char *title; 278 SDL_Event event;
267 SDL_Surface *icon; 279 char *title;
268 Uint8 *icon_mask; 280 SDL_Surface *icon;
269 int parsed; 281 Uint8 *icon_mask;
270 int w, h; 282 int parsed;
271 283 int w, h;
272 if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { 284
273 fprintf(stderr, 285 if (SDL_Init(SDL_INIT_VIDEO) < 0) {
274 "Couldn't initialize SDL: %s\n", SDL_GetError()); 286 fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError());
275 return(1); 287 return (1);
276 } 288 }
277 289
278 /* Check command line arguments */ 290 /* Check command line arguments */
279 w = 640; 291 w = 640;
280 h = 480; 292 h = 480;
281 video_bpp = 8; 293 video_bpp = 8;
282 video_flags = SDL_SWSURFACE; 294 video_flags = SDL_SWSURFACE;
283 parsed = 1; 295 parsed = 1;
284 while ( parsed ) { 296 while (parsed) {
285 if ( (argc >= 2) && (strcmp(argv[1], "-fullscreen") == 0) ) { 297 if ((argc >= 2) && (strcmp(argv[1], "-fullscreen") == 0)) {
286 video_flags |= SDL_FULLSCREEN; 298 video_flags |= SDL_FULLSCREEN;
287 argc -= 1; 299 argc -= 1;
288 argv += 1; 300 argv += 1;
289 } else 301 } else if ((argc >= 2) && (strcmp(argv[1], "-resize") == 0)) {
290 if ( (argc >= 2) && (strcmp(argv[1], "-resize") == 0) ) { 302 video_flags |= SDL_RESIZABLE;
291 video_flags |= SDL_RESIZABLE; 303 argc -= 1;
292 argc -= 1; 304 argv += 1;
293 argv += 1; 305 } else if ((argc >= 2) && (strcmp(argv[1], "-noframe") == 0)) {
294 } else 306 video_flags |= SDL_NOFRAME;
295 if ( (argc >= 2) && (strcmp(argv[1], "-noframe") == 0) ) { 307 argc -= 1;
296 video_flags |= SDL_NOFRAME; 308 argv += 1;
297 argc -= 1; 309 } else if ((argc >= 3) && (strcmp(argv[1], "-width") == 0)) {
298 argv += 1; 310 w = atoi(argv[2]);
299 } else 311 argc -= 2;
300 if ( (argc >= 3) && (strcmp(argv[1], "-width") == 0) ) { 312 argv += 2;
301 w = atoi(argv[2]); 313 } else if ((argc >= 3) && (strcmp(argv[1], "-height") == 0)) {
302 argc -= 2; 314 h = atoi(argv[2]);
303 argv += 2; 315 argc -= 2;
304 } else 316 argv += 2;
305 if ( (argc >= 3) && (strcmp(argv[1], "-height") == 0) ) { 317 } else if ((argc >= 3) && (strcmp(argv[1], "-bpp") == 0)) {
306 h = atoi(argv[2]); 318 video_bpp = atoi(argv[2]);
307 argc -= 2; 319 argc -= 2;
308 argv += 2; 320 argv += 2;
309 } else 321 } else {
310 if ( (argc >= 3) && (strcmp(argv[1], "-bpp") == 0) ) { 322 parsed = 0;
311 video_bpp = atoi(argv[2]); 323 }
312 argc -= 2; 324 }
313 argv += 2; 325
314 } else { 326 /* Set the icon -- this must be done before the first mode set */
315 parsed = 0; 327 icon = LoadIconSurface("icon.bmp", &icon_mask);
316 } 328 if (icon != NULL) {
317 } 329 SDL_WM_SetIcon(icon, icon_mask);
318 330 }
319 /* Set the icon -- this must be done before the first mode set */ 331 if (icon_mask != NULL)
320 icon = LoadIconSurface("icon.bmp", &icon_mask); 332 free(icon_mask);
321 if ( icon != NULL ) { 333
322 SDL_WM_SetIcon(icon, icon_mask); 334 /* Set the title bar */
323 } 335 if (argv[1] == NULL)
324 if ( icon_mask != NULL ) 336 title = "Testing 1.. 2.. 3...";
325 free(icon_mask); 337 else
326 338 title = argv[1];
327 /* Set the title bar */ 339 SDL_WM_SetCaption(title, "testwm");
328 if ( argv[1] == NULL ) 340
329 title = "Testing 1.. 2.. 3..."; 341 /* See if it's really set */
330 else 342 SDL_WM_GetCaption(&title, NULL);
331 title = argv[1]; 343 if (title)
332 SDL_WM_SetCaption(title, "testwm"); 344 printf("Title was set to: %s\n", title);
333 345 else
334 /* See if it's really set */ 346 printf("No window title was set!\n");
335 SDL_WM_GetCaption(&title, NULL); 347
336 if ( title ) 348 /* Initialize the display */
337 printf("Title was set to: %s\n", title); 349 if (SetVideoMode(w, h) < 0) {
338 else 350 quit(1);
339 printf("No window title was set!\n"); 351 }
340 352
341 /* Initialize the display */ 353 /* Set an event filter that discards everything but QUIT */
342 if ( SetVideoMode(w, h) < 0 ) { 354 SDL_GetEventFilter(&old_filterfunc, &old_filterdata);
343 quit(1); 355 SDL_SetEventFilter(FilterEvents, NULL);
344 } 356
345 357 /* Ignore key up events, they don't even get filtered */
346 /* Set an event filter that discards everything but QUIT */ 358 SDL_EventState(SDL_KEYUP, SDL_IGNORE);
347 SDL_SetEventFilter(FilterEvents); 359
348 360 /* Loop, waiting for QUIT */
349 /* Ignore key up events, they don't even get filtered */ 361 while (SDL_WaitEvent(&event)) {
350 SDL_EventState(SDL_KEYUP, SDL_IGNORE); 362 switch (event.type) {
351 363 case SDL_VIDEORESIZE:
352 /* Loop, waiting for QUIT */ 364 printf("Got a resize event: %dx%d\n",
353 while ( SDL_WaitEvent(&event) ) { 365 event.resize.w, event.resize.h);
354 switch (event.type) { 366 SetVideoMode(event.resize.w, event.resize.h);
355 case SDL_VIDEORESIZE: 367 break;
356 printf("Got a resize event: %dx%d\n", 368 case SDL_USEREVENT:
357 event.resize.w, event.resize.h); 369 printf("Handling internal quit request\n");
358 SetVideoMode(event.resize.w, event.resize.h); 370 /* Fall through to the quit handler */
359 break; 371 case SDL_QUIT:
360 case SDL_USEREVENT: 372 printf("Bye bye..\n");
361 printf("Handling internal quit request\n"); 373 quit(0);
362 /* Fall through to the quit handler */ 374 default:
363 case SDL_QUIT: 375 /* This should never happen */
364 printf("Bye bye..\n"); 376 printf("Warning: Event %d wasn't filtered\n", event.type);
365 quit(0); 377 break;
366 default: 378 }
367 /* This should never happen */ 379 }
368 printf("Warning: Event %d wasn't filtered\n", 380 printf("SDL_WaitEvent() error: %s\n", SDL_GetError());
369 event.type); 381 SDL_Quit();
370 break; 382 return (255);
371 } 383 }
372 }
373 printf("SDL_WaitEvent() error: %s\n", SDL_GetError());
374 SDL_Quit();
375 return(255);
376 }