mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-12-27 09:59:33 +01:00
fc4b7cba2c
* Make PPTC state non-static * DiskCacheLoadState can be null
38 lines
No EOL
1.1 KiB
C#
38 lines
No EOL
1.1 KiB
C#
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();
|
|
}
|
|
}
|
|
} |