From 1df4caa43bd247cbbebda3f78854266e499c7860 Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Mon, 24 Aug 2020 18:59:04 +0200 Subject: [PATCH] Fixed an issue where ES could crash when a controller was unplugged. --- es-core/src/InputManager.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/es-core/src/InputManager.cpp b/es-core/src/InputManager.cpp index 1998bd538..063fcc4e3 100644 --- a/es-core/src/InputManager.cpp +++ b/es-core/src/InputManager.cpp @@ -224,6 +224,11 @@ bool InputManager::parseEvent(const SDL_Event& ev, Window* window) switch (ev.type) { case SDL_JOYAXISMOTION: + // This should hopefully prevent a potential crash if the controller was unplugged + // while a game was running. + if (!mInputConfigs[ev.jaxis.which]) + return false; + axisValue = ev.jaxis.value; // For the analog trigger buttons, convert the negative<->positive axis values to only // positive values in order to avoid registering double inputs. This is only a @@ -259,11 +264,17 @@ bool InputManager::parseEvent(const SDL_Event& ev, Window* window) case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: + if (!mInputConfigs[ev.jaxis.which]) + return false; + window->input(getInputConfigByDevice(ev.jbutton.which), Input(ev.jbutton.which, TYPE_BUTTON, ev.jbutton.button, ev.jbutton.state == SDL_PRESSED, false)); return true; case SDL_JOYHATMOTION: + if (!mInputConfigs[ev.jaxis.which]) + return false; + window->input(getInputConfigByDevice(ev.jhat.which), Input(ev.jhat.which, TYPE_HAT, ev.jhat.hat, ev.jhat.value, false)); return true;