delay 2000ms before ShowPowerLevel

This commit is contained in:
madwind
2024-12-25 16:57:36 +08:00
parent 714c68b548
commit e509ffa716
2 changed files with 87 additions and 41 deletions

View File

@@ -1,4 +1,3 @@
using Ryujinx.Common.Logging;
using Ryujinx.SDL2.Common;
using System;
using System.Collections.Generic;
@@ -12,7 +11,7 @@ namespace Ryujinx.Input.SDL2
private readonly Dictionary<int, string> _gamepadsInstanceIdsMapping;
private readonly List<string> _gamepadsIds;
private readonly Lock _lock = new();
private readonly SDL2JoyConPair _joyConPair;
private readonly SDL2JoyConPair joyConPair;
public ReadOnlySpan<string> GamepadsIds
{
@@ -38,7 +37,7 @@ namespace Ryujinx.Input.SDL2
SDL2Driver.Instance.Initialize();
SDL2Driver.Instance.OnJoyStickConnected += HandleJoyStickConnected;
SDL2Driver.Instance.OnJoystickDisconnected += HandleJoyStickDisconnected;
_joyConPair = new SDL2JoyConPair();
joyConPair = new SDL2JoyConPair();
// Add already connected gamepads
int numJoysticks = SDL_NumJoysticks();
@@ -91,9 +90,9 @@ namespace Ryujinx.Input.SDL2
lock (_lock)
{
_gamepadsIds.Remove(id);
if (_joyConPair.GetGamepad(_gamepadsIds) == null)
if (joyConPair.GetGamepad(_gamepadsIds) == null)
{
_gamepadsIds.Remove(_joyConPair.Id);
_gamepadsIds.Remove(joyConPair.Id);
}
}
@@ -126,12 +125,10 @@ namespace Ryujinx.Input.SDL2
_gamepadsIds.Insert(joystickDeviceId, id);
else
_gamepadsIds.Add(id);
var powerLevel = SDL_JoystickCurrentPowerLevel(GetJoystickIndexByGamepadId(id));
Logger.Info?.Print(LogClass.Hid, $"Gamepad connected: {id}, power level: {powerLevel}");
if (_joyConPair.GetGamepad(_gamepadsIds) != null)
if (joyConPair.GetGamepad(_gamepadsIds) != null)
{
_gamepadsIds.Remove(_joyConPair.Id);
_gamepadsIds.Add(_joyConPair.Id);
_gamepadsIds.Remove(joyConPair.Id);
_gamepadsIds.Add(joyConPair.Id);
}
}
@@ -170,11 +167,11 @@ namespace Ryujinx.Input.SDL2
public IGamepad GetGamepad(string id)
{
if (id == _joyConPair.Id)
if (id == joyConPair.Id)
{
lock (_lock)
{
return _joyConPair.GetGamepad(_gamepadsIds);
return joyConPair.GetGamepad(_gamepadsIds);
}
}
@@ -192,6 +189,7 @@ namespace Ryujinx.Input.SDL2
return null;
}
Console.WriteLine("Game controller opened" + SDL_GameControllerName(gamepadHandle));
return new SDL2Gamepad(gamepadHandle, id);
}
}