From 9cf3deea8c03f8ae0094ade008794ce6e9f30470 Mon Sep 17 00:00:00 2001 From: Stefanos A Date: Thu, 16 Jan 2014 23:35:31 +0100 Subject: [PATCH] [Win] Improve WinMM.GetCapabilities performance Polling joyGetCaps is very very slow, so we should not do that every time GetCapabilities is called. Instead, we should call joyGetCaps once and cache the results. We need to find a different way to implement hotplugging. --- Source/Examples/Main.cs | 2 ++ Source/OpenTK/Platform/Windows/WinCombinedJoystick.cs | 3 +++ Source/OpenTK/Platform/Windows/WinGLNative.cs | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/Source/Examples/Main.cs b/Source/Examples/Main.cs index 84dba6d..8e68e09 100644 --- a/Source/Examples/Main.cs +++ b/Source/Examples/Main.cs @@ -101,6 +101,8 @@ namespace Examples public static void Main(string[] args) { Trace.Listeners.Add(new ConsoleTraceListener()); + Tests.GameWindowStates.Main(); + return; if (args.Length > 0) { diff --git a/Source/OpenTK/Platform/Windows/WinCombinedJoystick.cs b/Source/OpenTK/Platform/Windows/WinCombinedJoystick.cs index 9a69666..77477eb 100644 --- a/Source/OpenTK/Platform/Windows/WinCombinedJoystick.cs +++ b/Source/OpenTK/Platform/Windows/WinCombinedJoystick.cs @@ -50,6 +50,9 @@ namespace OpenTK.Platform.Windows readonly XInputJoystick xinput; readonly WinMMJoystick winmm; + readonly Dictionary index_to_winmm = + new Dictionary(); + #region Constructors public WinCombinedJoystick(XInputJoystick xinput, WinMMJoystick winmm) diff --git a/Source/OpenTK/Platform/Windows/WinGLNative.cs b/Source/OpenTK/Platform/Windows/WinGLNative.cs index eb348c8..3320946 100644 --- a/Source/OpenTK/Platform/Windows/WinGLNative.cs +++ b/Source/OpenTK/Platform/Windows/WinGLNative.cs @@ -82,6 +82,13 @@ namespace OpenTK.Platform.Windows const ClassStyle DefaultClassStyle = ClassStyle.OwnDC; + // Used for IInputDriver implementation + LegacyJoystickDriver joystick_driver = new LegacyJoystickDriver(); + KeyboardDevice keyboard = new KeyboardDevice(); + MouseDevice mouse = new MouseDevice(); + IList keyboards = new List(1); + IList mice = new List(1); + const long ExtendedBit = 1 << 24; // Used to distinguish left and right control, alt and enter keys. public static readonly uint ShiftLeftScanCode = Functions.MapVirtualKey(VirtualKeys.LSHIFT, 0); -- 2.7.4