allow custom wrapper functions
[supertux.git] / src / control / joystickkeyboardcontroller.cpp
index 09220c9..0fb4d9e 100644 (file)
 #include <config.h>
 
 #include <sstream>
-#include "joystickkeyboardcontroller.h"
-#include "gui/menu.h"
-#include "gettext.h"
-#include "lisp/lisp.h"
-#include "lisp/list_iterator.h"
-#include "game_session.h"
+#include "joystickkeyboardcontroller.hpp"
+#include "gui/menu.hpp"
+#include "gettext.hpp"
+#include "lisp/lisp.hpp"
+#include "lisp/list_iterator.hpp"
+#include "game_session.hpp"
 
 class JoystickKeyboardController::JoystickMenu : public Menu
 {
@@ -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) {