X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcontrol%2Fjoystickkeyboardcontroller.cpp;h=6bebf6b3d0dd493e0b5a9c96d42160d152db5a62;hb=aeec9baba33ec63d2d0fdd97d961a53ec5c1541d;hp=09220c99dac113de4eda00f5e2d1fd8283f856e8;hpb=d8f8e29fb933b925620274a11e7716e742a8f5ce;p=supertux.git diff --git a/src/control/joystickkeyboardcontroller.cpp b/src/control/joystickkeyboardcontroller.cpp index 09220c99d..6bebf6b3d 100644 --- a/src/control/joystickkeyboardcontroller.cpp +++ b/src/control/joystickkeyboardcontroller.cpp @@ -116,6 +116,13 @@ JoystickKeyboardController::JoystickKeyboardController() if(i != min_joybuttons-1) joy_button_map.insert(std::make_pair(i, MENU_SELECT)); } + + // some joysticks or SDL seem to produce some bogus events after being opened + Uint32 ticks = SDL_GetTicks(); + while(SDL_GetTicks() - ticks < 200) { + SDL_Event event; + SDL_PollEvent(&event); + } } JoystickKeyboardController::~JoystickKeyboardController() @@ -228,6 +235,14 @@ JoystickKeyboardController::write(lisp::Writer& writer) } void +JoystickKeyboardController::reset() +{ + Controller::reset(); + for(size_t i = 0; i < sizeof(last_keys); ++i) + last_keys[i] = 0; +} + +void JoystickKeyboardController::process_event(const SDL_Event& event) { switch(event.type) {