aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Cpu/Jit/JitDiskCacheLoadState.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Cpu/Jit/JitDiskCacheLoadState.cs')
-rw-r--r--Ryujinx.Cpu/Jit/JitDiskCacheLoadState.cs38
1 files changed, 38 insertions, 0 deletions
diff --git a/Ryujinx.Cpu/Jit/JitDiskCacheLoadState.cs b/Ryujinx.Cpu/Jit/JitDiskCacheLoadState.cs
new file mode 100644
index 00000000..7a4b670b
--- /dev/null
+++ b/Ryujinx.Cpu/Jit/JitDiskCacheLoadState.cs
@@ -0,0 +1,38 @@
+using ARMeilleure.Translation.PTC;
+using System;
+
+namespace Ryujinx.Cpu.Jit
+{
+ public class JitDiskCacheLoadState : IDiskCacheLoadState
+ {
+ /// <inheritdoc/>
+ public event Action<LoadState, int, int> StateChanged;
+
+ private readonly IPtcLoadState _loadState;
+
+ public JitDiskCacheLoadState(IPtcLoadState loadState)
+ {
+ loadState.PtcStateChanged += LoadStateChanged;
+ _loadState = loadState;
+ }
+
+ private void LoadStateChanged(PtcLoadingState newState, int current, int total)
+ {
+ LoadState state = newState switch
+ {
+ PtcLoadingState.Start => LoadState.Unloaded,
+ PtcLoadingState.Loading => LoadState.Loading,
+ PtcLoadingState.Loaded => LoadState.Loaded,
+ _ => throw new ArgumentException($"Invalid load state \"{newState}\".")
+ };
+
+ StateChanged?.Invoke(state, current, total);
+ }
+
+ /// <inheritdoc/>
+ public void Cancel()
+ {
+ _loadState.Continue();
+ }
+ }
+} \ No newline at end of file