Skip to content

Commit

Permalink
make joystick_options_menu and key_options_menu part of joystickkeybo…
Browse files Browse the repository at this point in the history
…ardcontroller, so they can be freed properly.

SVN-Revision: 6576
  • Loading branch information
Mathnerd314 committed Mar 7, 2010
1 parent dcb2f4c commit 7190768
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 38 deletions.
32 changes: 26 additions & 6 deletions src/control/joystickkeyboardcontroller.cpp
Expand Up @@ -45,7 +45,9 @@ JoystickKeyboardController::JoystickKeyboardController() :
jump_with_up_joy(),
jump_with_up_kbd(),
wait_for_key(-1),
wait_for_joystick(-1)
wait_for_joystick(-1),
key_options_menu(0),
joystick_options_menu(0)
{
// initialize default keyboard map
keymap[SDLK_LEFT] = LEFT;
Expand Down Expand Up @@ -108,6 +110,8 @@ JoystickKeyboardController::~JoystickKeyboardController()
if(*i != 0)
SDL_JoystickClose(*i);
}
delete key_options_menu;
delete joystick_options_menu;
}

void
Expand Down Expand Up @@ -171,6 +175,22 @@ JoystickKeyboardController::updateAvailableJoysticks()
}
}

KeyboardMenu*
JoystickKeyboardController::get_key_options_menu()
{
if (!key_options_menu)
key_options_menu = new KeyboardMenu(this);
return key_options_menu;
}

JoystickMenu*
JoystickKeyboardController::get_joystick_options_menu()
{
if (!joystick_options_menu)
joystick_options_menu = new JoystickMenu(this);
return joystick_options_menu;
}

void
JoystickKeyboardController::read(const Reader& lisp)
{
Expand Down Expand Up @@ -353,7 +373,7 @@ JoystickKeyboardController::process_button_event(const SDL_JoyButtonEvent& jbutt
if(jbutton.state == SDL_PRESSED)
{
bind_joybutton(jbutton.button, (Control)wait_for_joystick);
MenuStorage::get_joystick_options_menu()->update();
get_joystick_options_menu()->update();
reset();
wait_for_joystick = -1;
}
Expand All @@ -380,7 +400,7 @@ JoystickKeyboardController::process_axis_event(const SDL_JoyAxisEvent& jaxis)
else
bind_joyaxis(jaxis.axis + 1, Control(wait_for_joystick));

MenuStorage::get_joystick_options_menu()->update();
get_joystick_options_menu()->update();
wait_for_joystick = -1;
}
}
Expand Down Expand Up @@ -436,7 +456,7 @@ JoystickKeyboardController::process_hat_event(const SDL_JoyHatEvent& jhat)
if (changed & SDL_HAT_RIGHT && jhat.value & SDL_HAT_RIGHT)
bind_joyhat(SDL_HAT_RIGHT, (Control)wait_for_joystick);

MenuStorage::get_joystick_options_menu()->update();
get_joystick_options_menu()->update();
wait_for_joystick = -1;
}
else
Expand Down Expand Up @@ -563,14 +583,14 @@ JoystickKeyboardController::process_menu_key_event(const SDL_Event& event)
bind_key(event.key.keysym.sym, (Control) wait_for_key);
}
reset();
MenuStorage::get_key_options_menu()->update();
get_key_options_menu()->update();
wait_for_key = -1;
return;
}
if(wait_for_joystick >= 0) {
if(event.key.keysym.sym == SDLK_ESCAPE) {
reset();
MenuStorage::get_joystick_options_menu()->update();
get_joystick_options_menu()->update();
wait_for_joystick = -1;
}
return;
Expand Down
7 changes: 5 additions & 2 deletions src/control/joystickkeyboardcontroller.hpp
Expand Up @@ -46,8 +46,8 @@ class JoystickKeyboardController : public Controller
void read(const Reader& lisp);
void reset();

Menu* get_key_options_menu();
Menu* get_joystick_options_menu();
KeyboardMenu* get_key_options_menu();
JoystickMenu* get_joystick_options_menu();
void updateAvailableJoysticks();

private:
Expand Down Expand Up @@ -114,6 +114,9 @@ class JoystickKeyboardController : public Controller
int wait_for_key;
int wait_for_joystick;

KeyboardMenu* key_options_menu;
JoystickMenu* joystick_options_menu;

private:
JoystickKeyboardController(const JoystickKeyboardController&);
JoystickKeyboardController& operator=(const JoystickKeyboardController&);
Expand Down
24 changes: 0 additions & 24 deletions src/supertux/menu/menu_storage.cpp
Expand Up @@ -24,8 +24,6 @@

OptionsMenu* MenuStorage::options_menu = 0;
ProfileMenu* MenuStorage::profile_menu = 0;
KeyboardMenu* MenuStorage::key_options_menu = 0;
JoystickMenu* MenuStorage::joystick_options_menu = 0;

OptionsMenu*
MenuStorage::get_options_menu()
Expand All @@ -41,26 +39,4 @@ MenuStorage::get_profile_menu()
return profile_menu;
}

KeyboardMenu*
MenuStorage::get_key_options_menu()
{
if (!key_options_menu)
{ // FIXME: this in never freed
key_options_menu = new KeyboardMenu(g_main_controller);
}

return key_options_menu;
}

JoystickMenu*
MenuStorage::get_joystick_options_menu()
{
if (!joystick_options_menu)
{ // FIXME: this in never freed
joystick_options_menu = new JoystickMenu(g_main_controller);
}

return joystick_options_menu;
}

/* EOF */
4 changes: 0 additions & 4 deletions src/supertux/menu/menu_storage.hpp
Expand Up @@ -30,14 +30,10 @@ class MenuStorage

static OptionsMenu* get_options_menu();
static ProfileMenu* get_profile_menu();
static KeyboardMenu* get_key_options_menu();
static JoystickMenu* get_joystick_options_menu();

private:
static OptionsMenu* options_menu;
static ProfileMenu* profile_menu;
static KeyboardMenu* key_options_menu;
static JoystickMenu* joystick_options_menu;

private:
MenuStorage(const MenuStorage&);
Expand Down
4 changes: 2 additions & 2 deletions src/supertux/menu/options_menu.cpp
Expand Up @@ -157,10 +157,10 @@ OptionsMenu::OptionsMenu() :
add_inactive(MNID_MUSIC, _("Music (disabled)"));
}

add_submenu(_("Setup Keyboard"), MenuStorage::get_key_options_menu())
add_submenu(_("Setup Keyboard"), g_main_controller->get_key_options_menu())
->set_help(_("Configure key-action mappings"));

add_submenu(_("Setup Joystick"), MenuStorage::get_joystick_options_menu())
add_submenu(_("Setup Joystick"), g_main_controller->get_joystick_options_menu())
->set_help(_("Configure joystick control-action mappings"));
add_hl();
add_back(_("Back"));
Expand Down

0 comments on commit 7190768

Please sign in to comment.