aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTSRBerry <20988865+TSRBerry@users.noreply.github.com>2022-11-30 23:34:25 +0100
committerGitHub <noreply@github.com>2022-11-30 23:34:25 +0100
commit3fb583c98c39da58f0752c652ca60be87ff1f566 (patch)
tree6be74e635521ca677f9bfb5d5847a4a3ee5e364b
parentd2686e0a5b4f8ce70cbbd5cfcb02434921580834 (diff)
Avalonia: Clean up leftover RenderTimer & Fix minimum and initial window size (#3935)1.1.403
* ava: Cleanup RenderTimer * ava: Remove ContentControl from RendererHost * ava: Remove unused actual scale factor * ava: Enable UseGpu for Linux * ava: Set better initial size & Scale the window properly * ava: Realign properties * ava: Use explicit type & specify where the note applies
-rw-r--r--Ryujinx.Ava/Program.cs27
-rw-r--r--Ryujinx.Ava/Ui/Controls/RenderTimer.cs100
-rw-r--r--Ryujinx.Ava/Ui/Controls/RendererHost.axaml7
-rw-r--r--Ryujinx.Ava/Ui/Controls/RendererHost.axaml.cs2
-rw-r--r--Ryujinx.Ava/Ui/Windows/MainWindow.axaml5
-rw-r--r--Ryujinx.Ava/Ui/Windows/MainWindow.axaml.cs4
6 files changed, 13 insertions, 132 deletions
diff --git a/Ryujinx.Ava/Program.cs b/Ryujinx.Ava/Program.cs
index a941302b..91040397 100644
--- a/Ryujinx.Ava/Program.cs
+++ b/Ryujinx.Ava/Program.cs
@@ -1,8 +1,5 @@
using ARMeilleure.Translation.PTC;
using Avalonia;
-using Avalonia.Rendering;
-using Avalonia.Threading;
-using Ryujinx.Ava.Ui.Controls;
using Ryujinx.Ava.Ui.Windows;
using Ryujinx.Common;
using Ryujinx.Common.Configuration;
@@ -23,18 +20,15 @@ namespace Ryujinx.Ava
{
internal class Program
{
- public static double WindowScaleFactor { get; set; }
- public static double ActualScaleFactor { get; set; }
- public static string Version { get; private set; }
- public static string ConfigurationPath { get; private set; }
- public static bool PreviewerDetached { get; private set; }
- public static RenderTimer RenderTimer { get; private set; }
+ public static double WindowScaleFactor { get; set; }
+ public static string Version { get; private set; }
+ public static string ConfigurationPath { get; private set; }
+ public static bool PreviewerDetached { get; private set; }
[DllImport("user32.dll", SetLastError = true)]
public static extern int MessageBoxA(IntPtr hWnd, string text, string caption, uint type);
private const uint MB_ICONWARNING = 0x30;
- private const int BaseDpi = 96;
public static void Main(string[] args)
{
@@ -49,11 +43,7 @@ namespace Ryujinx.Ava
Initialize(args);
- RenderTimer = new RenderTimer();
-
BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
-
- RenderTimer.Dispose();
}
public static AppBuilder BuildAvaloniaApp()
@@ -65,7 +55,7 @@ namespace Ryujinx.Ava
EnableMultiTouch = true,
EnableIme = true,
UseEGL = false,
- UseGpu = false
+ UseGpu = true
})
.With(new Win32PlatformOptions
{
@@ -75,12 +65,6 @@ namespace Ryujinx.Ava
CompositionBackdropCornerRadius = 8.0f,
})
.UseSkia()
- .AfterSetup(_ =>
- {
- AvaloniaLocator.CurrentMutable
- .Bind<IRenderTimer>().ToConstant(RenderTimer)
- .Bind<IRenderLoop>().ToConstant(new RenderLoop(RenderTimer, Dispatcher.UIThread));
- })
.LogToTrace();
}
@@ -115,7 +99,6 @@ namespace Ryujinx.Ava
ForceDpiAware.Windows();
WindowScaleFactor = ForceDpiAware.GetWindowScaleFactor();
- ActualScaleFactor = ForceDpiAware.GetActualScaleFactor() / BaseDpi;
// Logging system information.
PrintSystemInfo();
diff --git a/Ryujinx.Ava/Ui/Controls/RenderTimer.cs b/Ryujinx.Ava/Ui/Controls/RenderTimer.cs
deleted file mode 100644
index 577115ea..00000000
--- a/Ryujinx.Ava/Ui/Controls/RenderTimer.cs
+++ /dev/null
@@ -1,100 +0,0 @@
-using Avalonia.Rendering;
-using System;
-using System.Threading;
-using System.Timers;
-
-namespace Ryujinx.Ava.Ui.Controls
-{
- internal class RenderTimer : IRenderTimer, IDisposable
- {
- public event Action<TimeSpan> Tick
- {
- add
- {
- _tick += value;
-
- if (_subscriberCount++ == 0)
- {
- Start();
- }
- }
-
- remove
- {
- if (--_subscriberCount == 0)
- {
- Stop();
- }
-
- _tick -= value;
- }
- }
-
- private Thread _tickThread;
- private readonly System.Timers.Timer _timer;
-
- private Action<TimeSpan> _tick;
- private int _subscriberCount;
-
- private bool _isRunning;
-
- private AutoResetEvent _resetEvent;
-
- public RenderTimer()
- {
- _timer = new System.Timers.Timer(15);
- _resetEvent = new AutoResetEvent(true);
- _timer.Elapsed += Timer_Elapsed;
- }
-
- private void Timer_Elapsed(object sender, ElapsedEventArgs e)
- {
- TickNow();
- }
-
- public void Start()
- {
- _timer.Start();
- if (_tickThread == null)
- {
- _tickThread = new Thread(RunTick);
- _tickThread.Name = "RenderTimerTickThread";
- _tickThread.IsBackground = true;
- _isRunning = true;
- _tickThread.Start();
- }
- }
-
- public void RunTick()
- {
- while (_isRunning)
- {
- _resetEvent.WaitOne();
- _tick?.Invoke(TimeSpan.FromMilliseconds(Environment.TickCount));
- }
- }
-
- public void TickNow()
- {
- lock (_timer)
- {
- _resetEvent.Set();
- }
- }
-
- public void Stop()
- {
- _timer.Stop();
- }
-
- public void Dispose()
- {
- _timer.Elapsed -= Timer_Elapsed;
- _timer.Stop();
- _isRunning = false;
- _resetEvent.Set();
- _tickThread.Join();
- _resetEvent.Dispose();
- }
- }
-}
diff --git a/Ryujinx.Ava/Ui/Controls/RendererHost.axaml b/Ryujinx.Ava/Ui/Controls/RendererHost.axaml
index be72fd61..5b27182d 100644
--- a/Ryujinx.Ava/Ui/Controls/RendererHost.axaml
+++ b/Ryujinx.Ava/Ui/Controls/RendererHost.axaml
@@ -4,11 +4,4 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Ryujinx.Ava.Ui.Controls.RendererHost">
- <ContentControl
- HorizontalAlignment="Stretch"
- HorizontalContentAlignment="Stretch"
- VerticalAlignment="Stretch"
- VerticalContentAlignment="Stretch"
- Name="View"
- />
</UserControl>
diff --git a/Ryujinx.Ava/Ui/Controls/RendererHost.axaml.cs b/Ryujinx.Ava/Ui/Controls/RendererHost.axaml.cs
index 0d1984fd..b6986b7c 100644
--- a/Ryujinx.Ava/Ui/Controls/RendererHost.axaml.cs
+++ b/Ryujinx.Ava/Ui/Controls/RendererHost.axaml.cs
@@ -41,7 +41,7 @@ namespace Ryujinx.Ava.Ui.Controls
{
_currentWindow.WindowCreated += CurrentWindow_WindowCreated;
_currentWindow.SizeChanged += CurrentWindow_SizeChanged;
- View.Content = _currentWindow;
+ Content = _currentWindow;
}
public void CreateVulkan()
diff --git a/Ryujinx.Ava/Ui/Windows/MainWindow.axaml b/Ryujinx.Ava/Ui/Windows/MainWindow.axaml
index 313e701c..5b9dd8f9 100644
--- a/Ryujinx.Ava/Ui/Windows/MainWindow.axaml
+++ b/Ryujinx.Ava/Ui/Windows/MainWindow.axaml
@@ -13,7 +13,7 @@
Title="Ryujinx"
Width="1280"
Height="785"
- MinWidth="1024"
+ MinWidth="1092"
MinHeight="680"
d:DesignHeight="720"
d:DesignWidth="1280"
@@ -57,6 +57,8 @@
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel
+ Name="MenuBar"
+ MinHeight="35"
Grid.Row="0"
Margin="0"
HorizontalAlignment="Stretch"
@@ -549,6 +551,7 @@
<Grid
Name="StatusBar"
Grid.Row="2"
+ MinHeight="30"
Height="30"
Margin="0,0"
HorizontalAlignment="Stretch"
diff --git a/Ryujinx.Ava/Ui/Windows/MainWindow.axaml.cs b/Ryujinx.Ava/Ui/Windows/MainWindow.axaml.cs
index e874982a..8b5a39a7 100644
--- a/Ryujinx.Ava/Ui/Windows/MainWindow.axaml.cs
+++ b/Ryujinx.Ava/Ui/Windows/MainWindow.axaml.cs
@@ -90,7 +90,9 @@ namespace Ryujinx.Ava.Ui.Windows
Title = $"Ryujinx {Program.Version}";
- Height /= Program.WindowScaleFactor;
+ // NOTE: Height of MenuBar and StatusBar is not usable here, since it would still be 0 at this point.
+ double barHeight = MenuBar.MinHeight + StatusBar.MinHeight;
+ Height = ((Height - barHeight) / Program.WindowScaleFactor) + barHeight;
Width /= Program.WindowScaleFactor;
if (Program.PreviewerDetached)