diff options
author | Emmanuel Hansen <emmausssss@gmail.com> | 2022-07-08 12:53:48 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-08 09:53:48 -0300 |
commit | bc5bb4459e74ca03aba6f779a98f2788a1c722fe (patch) | |
tree | 77c26f4597cb000bd71d2db06c65e69562fb81ec | |
parent | 55e97959b9720e2efbe2451c38e0610422335603 (diff) |
Fix deadlock in mouse input on Avalonia (#3444)1.1.167
* fix deadlock in mouse input
* apply @AcK77 changes
-rw-r--r-- | Ryujinx.Ava/Input/AvaloniaMouseDriver.cs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs b/Ryujinx.Ava/Input/AvaloniaMouseDriver.cs index d00ea667..51fa0130 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"; |