/ src / Ryujinx.Cpu / Jit / JitDiskCacheLoadState.cs
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  }