ryubing-ryujinx/src/Spv.Generator/DeterministicStringKey.cs
spl::kirakira e1b66399c9 Touchscreen failsafe, add LibraryAppletMyPage to Actions -> Tools, add a ton of HLE services, LDN monitor service
## Touchscreen Fix
- Added `GetScreenPositionNullable` for touch coordinate validation
- Returns `null` when touch is outside the rendered screen area
- Files: src/Ryujinx.Input/IMouse.cs, src/Ryujinx.Input/HLE/TouchScreenManager.cs

## LibraryAppletMyPage (User Page)
- Added Actions → Tools → User Page menu item
- Launches the MyPage system applet (program ID 0x0100000000001013)
- Files: src/Ryujinx/UI/Views/Main/MainMenuBarView.axaml, MainMenuBarView.axaml.cs

## HLE Services Implementation

### HID System Server
- 850: SetTouchScreenDefaultConfiguration
- 851: GetTouchScreenDefaultConfiguration
- 1200: AcquireConnectionTriggerTimeoutEvent
- 1201: SendConnectionTrigger
- 1202: AcquireDeviceRegisteredEventForControllerSupport
- 1203: GetAllowedBluetoothLinksCount

### acc:aa (IBaasAccessTokenAccessor)
- 0: EnsureCacheAsync
- 1: LoadCache
- 2: GetDeviceAccountId
- 50: RegisterNotificationTokenAsync
- 51: UnregisterNotificationTokenAsync

### nim (IShopServiceAsync)
- Commands 0-5: Cancel, GetSize, Read, GetErrorCode, Request, Prepare

### LDN Monitor Service (NEW)
- IMonitorServiceCreator: Added CreateMonitorService (command 0)
- IMonitorService: GetStateForMonitor, GetNetworkInfoForMonitor, GetIpv4AddressForMonitor,
  GetDisconnectReasonForMonitor, GetSecurityParameterForMonitor, GetNetworkConfigForMonitor,
  AttachStateChangeEvent, InitializeMonitor, FinalizeMonitor

## Applet Infrastructure
- ILibraryAppletSelfAccessor: Rewrite to support MiiEdit, MyPage applets
- AppletStateMgr: Complete rewrite with proper state machine and focus handling
- ICommonStateGetter: Updated ReceiveMessage and RequestToAcquireSleepLock
2026-01-30 19:45:01 +08:00

29 lines
660 B
C#

using System;
namespace Spv.Generator
{
internal class DeterministicStringKey : IEquatable<DeterministicStringKey>
{
private readonly string _value;
public DeterministicStringKey(string value)
{
_value = value;
}
public override int GetHashCode()
{
return DeterministicHashCode.GetHashCode(_value);
}
public bool Equals(DeterministicStringKey other)
{
return _value == other?._value;
}
public override bool Equals(object obj)
{
return obj is DeterministicStringKey key && Equals(key);
}
}
}