Skip to content

Commit 5f873b0

Browse files
Merge pull request gameplay3d#1828 from seanpaultaylor/next
Fixes gamepads disconnect crash on Android
2 parents c30dc5c + c91d4af commit 5f873b0

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

gameplay/src/Platform.cpp

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,31 +81,43 @@ void Platform::gamepadEventDisconnectedInternal(GamepadHandle handle)
8181
void Platform::gamepadButtonPressedEventInternal(GamepadHandle handle, Gamepad::ButtonMapping mapping)
8282
{
8383
Gamepad* gamepad = Gamepad::getGamepad(handle);
84-
unsigned int newButtons = gamepad->_buttons | (1 << mapping);
85-
gamepad->setButtons(newButtons);
86-
Form::gamepadButtonEventInternal(gamepad);
84+
if (gamepad)
85+
{
86+
unsigned int newButtons = gamepad->_buttons | (1 << mapping);
87+
gamepad->setButtons(newButtons);
88+
Form::gamepadButtonEventInternal(gamepad);
89+
}
8790
}
8891

8992
void Platform::gamepadButtonReleasedEventInternal(GamepadHandle handle, Gamepad::ButtonMapping mapping)
9093
{
9194
Gamepad* gamepad = Gamepad::getGamepad(handle);
92-
unsigned int newButtons = gamepad->_buttons & ~(1 << mapping);
93-
gamepad->setButtons(newButtons);
94-
Form::gamepadButtonEventInternal(gamepad);
95+
if (gamepad)
96+
{
97+
unsigned int newButtons = gamepad->_buttons & ~(1 << mapping);
98+
gamepad->setButtons(newButtons);
99+
Form::gamepadButtonEventInternal(gamepad);
100+
}
95101
}
96102

97103
void Platform::gamepadTriggerChangedEventInternal(GamepadHandle handle, unsigned int index, float value)
98104
{
99105
Gamepad* gamepad = Gamepad::getGamepad(handle);
100-
gamepad->setTriggerValue(index, value);
101-
Form::gamepadTriggerEventInternal(gamepad, index);
106+
if (gamepad)
107+
{
108+
gamepad->setTriggerValue(index, value);
109+
Form::gamepadTriggerEventInternal(gamepad, index);
110+
}
102111
}
103112

104113
void Platform::gamepadJoystickChangedEventInternal(GamepadHandle handle, unsigned int index, float x, float y)
105114
{
106115
Gamepad* gamepad = Gamepad::getGamepad(handle);
107-
gamepad->setJoystickValue(index, x, y);
108-
Form::gamepadJoystickEventInternal(gamepad, index);
116+
if (gamepad)
117+
{
118+
gamepad->setJoystickValue(index, x, y);
119+
Form::gamepadJoystickEventInternal(gamepad, index);
120+
}
109121
}
110122

111123
}

0 commit comments

Comments
 (0)