aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx/Ui/MainWindow.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx/Ui/MainWindow.cs')
-rw-r--r--Ryujinx/Ui/MainWindow.cs60
1 files changed, 28 insertions, 32 deletions
diff --git a/Ryujinx/Ui/MainWindow.cs b/Ryujinx/Ui/MainWindow.cs
index 48e5a5b7..1fa52d32 100644
--- a/Ryujinx/Ui/MainWindow.cs
+++ b/Ryujinx/Ui/MainWindow.cs
@@ -33,6 +33,9 @@ using System.Threading.Tasks;
using GUI = Gtk.Builder.ObjectAttribute;
+using PtcLoadingState = ARMeilleure.Translation.PTC.PtcLoadingState;
+using ShaderCacheLoadingState = Ryujinx.Graphics.Gpu.Shader.ShaderCacheState;
+
namespace Ryujinx.Ui
{
public class MainWindow : Window
@@ -105,8 +108,6 @@ namespace Ryujinx.Ui
[GUI] Label _loadingStatusLabel;
[GUI] ProgressBar _loadingStatusBar;
- private string _loadingStatusTitle = "";
-
#pragma warning restore CS0649, IDE0044, CS0169
public MainWindow() : this(new Builder("Ryujinx.Ui.MainWindow.glade")) { }
@@ -346,43 +347,38 @@ namespace Ryujinx.Ui
private void SetupProgressUiHandlers()
{
- Ptc.PtcTranslationStateChanged -= PtcStatusChanged;
- Ptc.PtcTranslationStateChanged += PtcStatusChanged;
-
- Ptc.PtcTranslationProgressChanged -= LoadingProgressChanged;
- Ptc.PtcTranslationProgressChanged += LoadingProgressChanged;
+ Ptc.PtcStateChanged -= ProgressHandler;
+ Ptc.PtcStateChanged += ProgressHandler;
- _emulationContext.Gpu.ShaderCacheStateChanged -= ShaderCacheStatusChanged;
- _emulationContext.Gpu.ShaderCacheStateChanged += ShaderCacheStatusChanged;
-
- _emulationContext.Gpu.ShaderCacheProgressChanged -= LoadingProgressChanged;
- _emulationContext.Gpu.ShaderCacheProgressChanged += LoadingProgressChanged;
+ _emulationContext.Gpu.ShaderCacheStateChanged -= ProgressHandler;
+ _emulationContext.Gpu.ShaderCacheStateChanged += ProgressHandler;
}
- private void ShaderCacheStatusChanged(bool state)
+ private void ProgressHandler<T>(T state, int current, int total) where T : Enum
{
- _loadingStatusTitle = "Shaders";
- Application.Invoke(delegate
- {
- _loadingStatusBar.Visible = _loadingStatusLabel.Visible = state;
- });
- }
+ bool visible;
+ string label;
- private void PtcStatusChanged(bool state)
- {
- _loadingStatusTitle = "PTC";
- Application.Invoke(delegate
+ switch (state)
{
- _loadingStatusBar.Visible = _loadingStatusLabel.Visible = state;
- });
- }
+ case PtcLoadingState ptcState:
+ visible = ptcState != PtcLoadingState.Loaded;
+ label = $"PTC : {current}/{total}";
+ break;
+ case ShaderCacheLoadingState shaderCacheState:
+ visible = shaderCacheState != ShaderCacheLoadingState.Loaded;
+ label = $"Shaders : {current}/{total}";
+ break;
+ default:
+ throw new ArgumentException($"Unknown Progress Handler type {typeof(T)}");
+ }
- private void LoadingProgressChanged(int value, int total)
- {
Application.Invoke(delegate
{
- _loadingStatusBar.Fraction = (double)value / total;
- _loadingStatusLabel.Text = $"{_loadingStatusTitle} : {value}/{total}";
+ _loadingStatusLabel.Text = label;
+ _loadingStatusBar.Fraction = total > 0 ? (double)current / total : 0;
+ _loadingStatusBar.Visible = visible;
+ _loadingStatusLabel.Visible = visible;
});
}
@@ -464,6 +460,8 @@ namespace Ryujinx.Ui
UpdateGraphicsConfig();
+ SetupProgressUiHandlers();
+
SystemVersion firmwareVersion = _contentManager.GetCurrentFirmwareVersion();
bool isDirectory = Directory.Exists(path);
@@ -584,8 +582,6 @@ namespace Ryujinx.Ui
_deviceExitStatus.Reset();
- SetupProgressUiHandlers();
-
Translator.IsReadyForTranslation.Reset();
#if MACOS_BUILD
CreateGameWindow();