JitDiskCacheLoadState.cs
1 using ARMeilleure.Translation.PTC; 2 using System; 3 4 namespace Ryujinx.Cpu.Jit 5 { 6 public class JitDiskCacheLoadState : IDiskCacheLoadState 7 { 8 /// <inheritdoc/> 9 public event Action<LoadState, int, int> StateChanged; 10 11 private readonly IPtcLoadState _loadState; 12 13 public JitDiskCacheLoadState(IPtcLoadState loadState) 14 { 15 loadState.PtcStateChanged += LoadStateChanged; 16 _loadState = loadState; 17 } 18 19 private void LoadStateChanged(PtcLoadingState newState, int current, int total) 20 { 21 LoadState state = newState switch 22 { 23 PtcLoadingState.Start => LoadState.Unloaded, 24 PtcLoadingState.Loading => LoadState.Loading, 25 PtcLoadingState.Loaded => LoadState.Loaded, 26 _ => throw new ArgumentException($"Invalid load state \"{newState}\"."), 27 }; 28 29 StateChanged?.Invoke(state, current, total); 30 } 31 32 /// <inheritdoc/> 33 public void Cancel() 34 { 35 _loadState.Continue(); 36 } 37 } 38 }