diff --git a/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs b/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs index d00ea667e..51fa01306 100644 --- a/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs +++ b/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs @@ -1,3 +1,4 @@ +using Avalonia; using Avalonia.Controls; using Avalonia.Input; using Avalonia.Threading; @@ -13,6 +14,7 @@ namespace Ryujinx.Ava.Input { private Control _widget; private bool _isDisposed; + private Size _size; public bool[] PressedButtons { get; } @@ -29,6 +31,14 @@ namespace Ryujinx.Ava.Input _widget.PointerWheelChanged += Parent_ScrollEvent; PressedButtons = new bool[(int)MouseButton.Count]; + + _size = new Size((int)parent.Bounds.Width, (int)parent.Bounds.Height); + parent.GetObservable(Control.BoundsProperty).Subscribe(Resized); + } + + private void Resized(Rect rect) + { + _size = new Size((int)rect.Width, (int)rect.Height); } private void Parent_ScrollEvent(object o, PointerWheelEventArgs args) @@ -78,14 +88,7 @@ namespace Ryujinx.Ava.Input public Size GetClientSize() { - Size size = new(); - - Dispatcher.UIThread.InvokeAsync(() => - { - size = new Size((int)_widget.Bounds.Width, (int)_widget.Bounds.Height); - }).Wait(); - - return size; + return _size; } public string DriverName => "Avalonia";