diff -up trackballs-1.1.4/src/gameMode.cc~ trackballs-1.1.4/src/gameMode.cc --- trackballs-1.1.4/src/gameMode.cc~ 2006-08-06 14:01:39.000000000 +0200 +++ trackballs-1.1.4/src/gameMode.cc 2011-05-18 15:51:03.320256212 +0200 @@ -26,9 +26,8 @@ using namespace std; GameMode *GameMode::current; -GameMode::GameMode() { keyUpReceived=1; } -GameMode::~GameMode() { -} +GameMode::GameMode() {} +GameMode::~GameMode() {} void GameMode::activate(GameMode* gm) { if(current) current->deactivated(); current = gm; @@ -36,7 +35,6 @@ void GameMode::activate(GameMode* gm) { } void GameMode::display(){} void GameMode::key(int){} -void GameMode::keyUp(int){ keyUpReceived=1; } void GameMode::special(int key,int x,int y){} void GameMode::idle(Real td){} void GameMode::mouse(int state,int x,int y){} diff -up trackballs-1.1.4/src/gameMode.h~ trackballs-1.1.4/src/gameMode.h --- trackballs-1.1.4/src/gameMode.h~ 2006-08-06 14:01:20.000000000 +0200 +++ trackballs-1.1.4/src/gameMode.h 2011-05-18 15:49:50.760256145 +0200 @@ -33,7 +33,6 @@ class GameMode { virtual void display(); virtual void key(int); - virtual void keyUp(int); virtual void special(int,int,int); virtual void idle(Real dt); virtual void doExpensiveComputations(); @@ -44,9 +43,6 @@ class GameMode { static void activate(GameMode*); static GameMode *current; - protected: - int keyUpReceived; - private: }; #endif diff -up trackballs-1.1.4/src/mainMode.cc~ trackballs-1.1.4/src/mainMode.cc --- trackballs-1.1.4/src/mainMode.cc~ 2007-05-25 12:23:50.000000000 +0200 +++ trackballs-1.1.4/src/mainMode.cc 2011-05-18 15:45:44.458256059 +0200 @@ -464,11 +464,6 @@ void MainMode::activated() { camFocus[1] = Game::current->map->startPosition[1] - 5; time = 0.0; flash = 0.0; - - /* Fix for an apparanet bug in my SDL + Xorg combination... */ - SDL_WM_ToggleFullScreen(screen); - SDL_WM_ToggleFullScreen(screen); - } void MainMode::deactivated() { free(viewportData); viewportData=NULL; } void MainMode::playerLoose() { Game::current->gamer->playerLoose(); gameStatus=statusGameOver; } diff -up trackballs-1.1.4/src/mmad.cc~ trackballs-1.1.4/src/mmad.cc --- trackballs-1.1.4/src/mmad.cc~ 2011-05-18 14:55:38.000000000 +0200 +++ trackballs-1.1.4/src/mmad.cc 2011-05-18 16:11:33.817256492 +0200 @@ -411,7 +411,6 @@ void innerMain(void *closure,int argc,ch /* Initialize random number generator */ int seed=(int) getSystemTime(); srand(seed); - int keyUpReceived=1; while(is_running) { @@ -469,9 +468,6 @@ void innerMain(void *closure,int argc,ch if(GameMode::current) GameMode::current->mouseDown(e->button,e->x,e->y); break; case SDL_KEYUP: - /* Prevent repeated keys */ - keyUpReceived=1; - /* Use Caps lock key to determine if mouse should be hidden+grabbed */ if(event.key.keysym.sym == SDLK_CAPSLOCK) { if(SDL_GetModState() & KMOD_CAPS) { @@ -481,12 +477,12 @@ void innerMain(void *closure,int argc,ch SDL_WM_GrabInput(SDL_GRAB_ON); SDL_ShowCursor(SDL_DISABLE); } - } else - GameMode::current->keyUp(event.key.keysym.sym); + } + break; case SDL_KEYDOWN: - /* Always quit if the 'q' key is pressed */ - if(event.key.keysym.sym == 'q' && SDL_GetModState() & KMOD_CTRL) exit(0); + if(event.key.keysym.sym == 'q' && SDL_GetModState() & KMOD_CTRL) + exit(0); /* Change between fullscreen/windowed mode if the 'f' key is pressed */ @@ -525,14 +521,13 @@ void innerMain(void *closure,int argc,ch ((EditMode*)GameMode::current)->askQuit(); } else if((GameMode::current && GameMode::current == MenuMode::menuMode)) is_running=0; - else { GameMode::activate(MenuMode::menuMode); while(SDL_PollEvent(&event)) {} } - + else { + GameMode::activate(MenuMode::menuMode); + while(SDL_PollEvent(&event)) {} + } } - else if(GameMode::current) { - /* Prevent repeated keys */ - if(!keyUpReceived) break; - keyUpReceived=0; + else if(GameMode::current) { GameMode::current->key(event.key.keysym.sym); }