- some code rearrangement for readability and maintainability
- commented out some destructor code that's causing crashes (temporarily creates a minor memory leak, triggered only when reloading the panel)
This commit is contained in:
parent
79b25c850e
commit
db7b3ec096
2 changed files with 105 additions and 31 deletions
|
@ -181,7 +181,7 @@ FGInput::FGInput ()
|
|||
|
||||
FGInput::~FGInput ()
|
||||
{
|
||||
// TODO: delete all FGBinding objects explicitly
|
||||
// no op
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -632,6 +632,70 @@ FGInput::_find_key_bindings (unsigned int k, int modifiers)
|
|||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Implementation of FGInput::button.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
FGInput::button::button ()
|
||||
: is_repeatable(false),
|
||||
last_state(-1)
|
||||
{
|
||||
}
|
||||
|
||||
FGInput::button::~button ()
|
||||
{
|
||||
// FIXME: memory leak
|
||||
// for (int i = 0; i < FG_MOD_MAX; i++)
|
||||
// for (int j = 0; i < bindings[i].size(); j++)
|
||||
// delete bindings[i][j];
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Implementation of FGInput::axis.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
FGInput::axis::axis ()
|
||||
: last_value(9999999),
|
||||
tolerance(0.002),
|
||||
low_threshold(-0.9),
|
||||
high_threshold(0.9)
|
||||
{
|
||||
}
|
||||
|
||||
FGInput::axis::~axis ()
|
||||
{
|
||||
for (int i = 0; i < FG_MOD_MAX; i++)
|
||||
for (unsigned int j = 0; i < bindings[i].size(); j++)
|
||||
delete bindings[i][j];
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Implementation of FGInput::joystick.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
FGInput::joystick::joystick ()
|
||||
{
|
||||
}
|
||||
|
||||
FGInput::joystick::~joystick ()
|
||||
{
|
||||
delete js;
|
||||
delete[] axes;
|
||||
delete[] buttons;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Implementation of GLUT callbacks.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Construct the modifiers.
|
||||
*/
|
||||
|
|
|
@ -44,6 +44,13 @@
|
|||
SG_USING_STD(map);
|
||||
SG_USING_STD(vector);
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// General binding support.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* An input binding of some sort.
|
||||
*
|
||||
|
@ -134,6 +141,12 @@ private:
|
|||
};
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// General input mapping support.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/**
|
||||
* Generic input module.
|
||||
*
|
||||
|
@ -154,7 +167,16 @@ public:
|
|||
FG_MOD_MAX = 16 // enough to handle all combinations
|
||||
};
|
||||
|
||||
FGInput();
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
FGInput ();
|
||||
|
||||
|
||||
/**
|
||||
* Destructor.
|
||||
*/
|
||||
virtual ~FGInput();
|
||||
|
||||
//
|
||||
|
@ -184,7 +206,6 @@ public:
|
|||
|
||||
|
||||
private:
|
||||
|
||||
// Constants
|
||||
enum
|
||||
{
|
||||
|
@ -206,15 +227,8 @@ private:
|
|||
* Settings for a key or button.
|
||||
*/
|
||||
struct button {
|
||||
button ()
|
||||
: is_repeatable(false),
|
||||
last_state(-1)
|
||||
{}
|
||||
virtual ~button () {
|
||||
for (int i = 0; i < FG_MOD_MAX; i++)
|
||||
for (int j = 0; i < bindings[i].size(); j++)
|
||||
delete bindings[i][j];
|
||||
}
|
||||
button ();
|
||||
virtual ~button ();
|
||||
bool is_repeatable;
|
||||
int last_state;
|
||||
binding_list_t bindings[FG_MOD_MAX];
|
||||
|
@ -225,17 +239,8 @@ private:
|
|||
* Settings for a single joystick axis.
|
||||
*/
|
||||
struct axis {
|
||||
axis ()
|
||||
: last_value(9999999),
|
||||
tolerance(0.002),
|
||||
low_threshold(-0.9),
|
||||
high_threshold(0.9)
|
||||
{}
|
||||
virtual ~axis () {
|
||||
for (int i = 0; i < FG_MOD_MAX; i++)
|
||||
for (int j = 0; i < bindings[i].size(); j++)
|
||||
delete bindings[i][j];
|
||||
}
|
||||
axis ();
|
||||
virtual ~axis ();
|
||||
float last_value;
|
||||
float tolerance;
|
||||
binding_list_t bindings[FG_MOD_MAX];
|
||||
|
@ -250,14 +255,12 @@ private:
|
|||
* Settings for a joystick.
|
||||
*/
|
||||
struct joystick {
|
||||
virtual ~joystick () {
|
||||
delete js;
|
||||
delete[] axes;
|
||||
delete[] buttons;
|
||||
}
|
||||
joystick ();
|
||||
virtual ~joystick ();
|
||||
int jsnum;
|
||||
jsJoystick * js;
|
||||
int naxes;
|
||||
int nbuttons;
|
||||
jsJoystick * js;
|
||||
axis * axes;
|
||||
button * buttons;
|
||||
};
|
||||
|
@ -319,12 +322,19 @@ private:
|
|||
|
||||
};
|
||||
|
||||
|
||||
extern FGInput current_input;
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// GLUT callbacks.
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// Handle keyboard events
|
||||
void GLUTkey(unsigned char k, int x, int y);
|
||||
void GLUTkeyup(unsigned char k, int x, int y);
|
||||
void GLUTspecialkey(int k, int x, int y);
|
||||
void GLUTspecialkeyup(int k, int x, int y);
|
||||
|
||||
extern FGInput current_input;
|
||||
|
||||
#endif // _CONTROLS_HXX
|
||||
|
|
Loading…
Reference in a new issue