aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com>2024-04-10 22:40:17 +0100
committerGitHub <noreply@github.com>2024-04-10 23:40:17 +0200
commit9480e5c5ceeac3219dc0e0a90c0cb2a5487a7298 (patch)
treef16bf6937655aa9f506abb935a9d2450aa1d8b43
parent0652813b0f7500bf07309a6906331644c3a2363b (diff)
Ava UI: Prevent Status Bar Backend Update (#6506)1.1.1275
* Prevent Status Bar Backend Update * Make it a switch
-rw-r--r--src/Ryujinx/AppHost.cs18
-rw-r--r--src/Ryujinx/UI/Models/StatusInitEventArgs.cs16
-rw-r--r--src/Ryujinx/UI/Models/StatusUpdatedEventArgs.cs6
-rw-r--r--src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs15
4 files changed, 45 insertions, 10 deletions
diff --git a/src/Ryujinx/AppHost.cs b/src/Ryujinx/AppHost.cs
index d69bfc14..43e7a79e 100644
--- a/src/Ryujinx/AppHost.cs
+++ b/src/Ryujinx/AppHost.cs
@@ -112,6 +112,7 @@ namespace Ryujinx.Ava
private readonly object _lockObject = new();
public event EventHandler AppExit;
+ public event EventHandler<StatusInitEventArgs> StatusInitEvent;
public event EventHandler<StatusUpdatedEventArgs> StatusUpdatedEvent;
public VirtualFileSystem VirtualFileSystem { get; }
@@ -947,6 +948,7 @@ namespace Ryujinx.Ava
{
_renderingStarted = true;
_viewModel.SwitchToRenderer(false);
+ InitStatus();
}
Device.PresentFrame(() => (RendererHost.EmbeddedWindow as EmbeddedWindowOpenGL)?.SwapBuffers());
@@ -970,6 +972,18 @@ namespace Ryujinx.Ava
(RendererHost.EmbeddedWindow as EmbeddedWindowOpenGL)?.MakeCurrent(true);
}
+ public void InitStatus()
+ {
+ StatusInitEvent?.Invoke(this, new StatusInitEventArgs(
+ ConfigurationState.Instance.Graphics.GraphicsBackend.Value switch
+ {
+ GraphicsBackend.Vulkan => "Vulkan",
+ GraphicsBackend.OpenGl => "OpenGL",
+ _ => throw new NotImplementedException()
+ },
+ $"GPU: {_renderer.GetHardwareInfo().GpuDriver}"));
+ }
+
public void UpdateStatus()
{
// Run a status update only when a frame is to be drawn. This prevents from updating the ui and wasting a render when no frame is queued.
@@ -983,12 +997,10 @@ namespace Ryujinx.Ava
StatusUpdatedEvent?.Invoke(this, new StatusUpdatedEventArgs(
Device.EnableDeviceVsync,
LocaleManager.Instance[LocaleKeys.VolumeShort] + $": {(int)(Device.GetVolume() * 100)}%",
- ConfigurationState.Instance.Graphics.GraphicsBackend.Value == GraphicsBackend.Vulkan ? "Vulkan" : "OpenGL",
dockedMode,
ConfigurationState.Instance.Graphics.AspectRatio.Value.ToText(),
LocaleManager.Instance[LocaleKeys.Game] + $": {Device.Statistics.GetGameFrameRate():00.00} FPS ({Device.Statistics.GetGameFrameTime():00.00} ms)",
- $"FIFO: {Device.Statistics.GetFifoPercent():00.00} %",
- $"GPU: {_renderer.GetHardwareInfo().GpuDriver}"));
+ $"FIFO: {Device.Statistics.GetFifoPercent():00.00} %"));
}
public async Task ShowExitPrompt()
diff --git a/src/Ryujinx/UI/Models/StatusInitEventArgs.cs b/src/Ryujinx/UI/Models/StatusInitEventArgs.cs
new file mode 100644
index 00000000..4b08737e
--- /dev/null
+++ b/src/Ryujinx/UI/Models/StatusInitEventArgs.cs
@@ -0,0 +1,16 @@
+using System;
+
+namespace Ryujinx.Ava.UI.Models
+{
+ internal class StatusInitEventArgs : EventArgs
+ {
+ public string GpuBackend { get; }
+ public string GpuName { get; }
+
+ public StatusInitEventArgs(string gpuBackend, string gpuName)
+ {
+ GpuBackend = gpuBackend;
+ GpuName = gpuName;
+ }
+ }
+}
diff --git a/src/Ryujinx/UI/Models/StatusUpdatedEventArgs.cs b/src/Ryujinx/UI/Models/StatusUpdatedEventArgs.cs
index 7f04c0ee..ee5648fa 100644
--- a/src/Ryujinx/UI/Models/StatusUpdatedEventArgs.cs
+++ b/src/Ryujinx/UI/Models/StatusUpdatedEventArgs.cs
@@ -6,23 +6,19 @@ namespace Ryujinx.Ava.UI.Models
{
public bool VSyncEnabled { get; }
public string VolumeStatus { get; }
- public string GpuBackend { get; }
public string AspectRatio { get; }
public string DockedMode { get; }
public string FifoStatus { get; }
public string GameStatus { get; }
- public string GpuName { get; }
- public StatusUpdatedEventArgs(bool vSyncEnabled, string volumeStatus, string gpuBackend, string dockedMode, string aspectRatio, string gameStatus, string fifoStatus, string gpuName)
+ public StatusUpdatedEventArgs(bool vSyncEnabled, string volumeStatus, string dockedMode, string aspectRatio, string gameStatus, string fifoStatus)
{
VSyncEnabled = vSyncEnabled;
VolumeStatus = volumeStatus;
- GpuBackend = gpuBackend;
DockedMode = dockedMode;
AspectRatio = aspectRatio;
GameStatus = gameStatus;
FifoStatus = fifoStatus;
- GpuName = gpuName;
}
}
}
diff --git a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
index 036a536e..130e708c 100644
--- a/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
+++ b/src/Ryujinx/UI/ViewModels/MainWindowViewModel.cs
@@ -1172,6 +1172,7 @@ namespace Ryujinx.Ava.UI.ViewModels
{
RendererHostControl.WindowCreated += RendererHost_Created;
+ AppHost.StatusInitEvent += Init_StatusBar;
AppHost.StatusUpdatedEvent += Update_StatusBar;
AppHost.AppExit += AppHost_AppExit;
@@ -1198,6 +1199,18 @@ namespace Ryujinx.Ava.UI.ViewModels
}
}
+ private void Init_StatusBar(object sender, StatusInitEventArgs args)
+ {
+ if (ShowMenuAndStatusBar && !ShowLoadProgress)
+ {
+ Dispatcher.UIThread.InvokeAsync(() =>
+ {
+ GpuNameText = args.GpuName;
+ BackendText = args.GpuBackend;
+ });
+ }
+ }
+
private void Update_StatusBar(object sender, StatusUpdatedEventArgs args)
{
if (ShowMenuAndStatusBar && !ShowLoadProgress)
@@ -1220,8 +1233,6 @@ namespace Ryujinx.Ava.UI.ViewModels
GameStatusText = args.GameStatus;
VolumeStatusText = args.VolumeStatus;
FifoStatusText = args.FifoStatus;
- GpuNameText = args.GpuName;
- BackendText = args.GpuBackend;
ShowStatusSeparator = true;
});