From d4348c50837157cc62d27ca37a5c80076f0ba325 Mon Sep 17 00:00:00 2001 From: thefiddler Date: Mon, 30 Dec 2013 17:22:45 +0100 Subject: [PATCH] [SDL2] Fixed joystick/controller hotplugging support --- Source/OpenTK/Platform/SDL2/Sdl2JoystickDriver.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Source/OpenTK/Platform/SDL2/Sdl2JoystickDriver.cs b/Source/OpenTK/Platform/SDL2/Sdl2JoystickDriver.cs index 70f08ca9..b0786d02 100644 --- a/Source/OpenTK/Platform/SDL2/Sdl2JoystickDriver.cs +++ b/Source/OpenTK/Platform/SDL2/Sdl2JoystickDriver.cs @@ -303,11 +303,13 @@ namespace OpenTK.Platform.SDL2 case EventType.JOYDEVICEREMOVED: if (IsJoystickInstanceValid(id)) { - int instance_id = sdl_instanceid_to_joysticks[id]; - sdl_instanceid_to_joysticks.Remove(id); + int instance_id = id; + int device_id = sdl_instanceid_to_joysticks[instance_id]; - JoystickDevice joystick = (JoystickDevice)joysticks[instance_id]; + JoystickDevice joystick = (JoystickDevice)joysticks[device_id]; joystick.Details.IsConnected = false; + + sdl_instanceid_to_joysticks.Remove(instance_id); } else { @@ -436,8 +438,11 @@ namespace OpenTK.Platform.SDL2 case EventType.CONTROLLERDEVICEREMOVED: if (IsControllerInstanceValid(id)) { - controllers[id].State.SetConnected(false); - sdl_instanceid_to_controllers.Remove(id); + int instance_id = id; + int device_id = sdl_instanceid_to_controllers[instance_id]; + + controllers[device_id].State.SetConnected(false); + sdl_instanceid_to_controllers.Remove(device_id); } else {