Fri, 03 Dec 2010 14:21:19 +0000
add SDL event handler -- now we can quit the emulator without using kill -9! :)
src/main.c | file | annotate | diff | revisions |
1.1 diff -r 7d14fab5e4aa -r c472ae8f44b2 src/main.c 1.2 --- a/src/main.c Fri Dec 03 01:43:57 2010 +0000 1.3 +++ b/src/main.c Fri Dec 03 14:21:19 2010 +0000 1.4 @@ -115,6 +115,38 @@ 1.5 SDL_Flip(s); 1.6 } 1.7 1.8 +/** 1.9 + * @brief Handle events posted by SDL. 1.10 + */ 1.11 +bool HandleSDLEvents(SDL_Surface *screen) 1.12 +{ 1.13 + SDL_Event event; 1.14 + while (SDL_PollEvent(&event)) 1.15 + { 1.16 + switch (event.type) { 1.17 + case SDL_QUIT: 1.18 + // Quit button tagged. Exit. 1.19 + return true; 1.20 + case SDL_KEYDOWN: 1.21 + switch (event.key.keysym.sym) { 1.22 + case SDLK_ESCAPE: 1.23 + if (event.key.keysym.mod & (KMOD_LALT | KMOD_RALT)) 1.24 + // ALT-ESC pressed; exit emulator 1.25 + return true; 1.26 + break; 1.27 + default: 1.28 + break; 1.29 + } 1.30 + break; 1.31 + default: 1.32 + break; 1.33 + } 1.34 + } 1.35 + 1.36 + return false; 1.37 +} 1.38 + 1.39 + 1.40 /**************************** 1.41 * blessed be thy main()... 1.42 ****************************/ 1.43 @@ -183,6 +215,10 @@ 1.44 clock_cycles -= CLOCKS_PER_60HZ; 1.45 } 1.46 1.47 + // handle SDL events -- returns true if we need to exit 1.48 + if (HandleSDLEvents(screen)) 1.49 + exitEmu = true; 1.50 + 1.51 // make sure frame rate is equal to real time 1.52 uint32_t now = SDL_GetTicks(); 1.53 if (now < next_timeslot) {