JitDiskCacheLoadState.cs 1.1 KB

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