From 1321361946bfefee8520246c5ebab900d3370230 Mon Sep 17 00:00:00 2001 From: X9VoiD Date: Fri, 20 May 2022 04:35:40 +0800 Subject: [PATCH] Send unmodified position --- build.sh | 0 .../WindowsInk/Pointer/WinInkAbsolutePointer.cs | 1 + .../WindowsInk/Pointer/WinInkBasePointer.cs | 16 +++++++++++++--- .../WindowsInk/Pointer/WinInkRelativePointer.cs | 1 + 4 files changed, 15 insertions(+), 3 deletions(-) mode change 100644 => 100755 build.sh diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 diff --git a/src/OutputMode/WindowsInk/Pointer/WinInkAbsolutePointer.cs b/src/OutputMode/WindowsInk/Pointer/WinInkAbsolutePointer.cs index 42d22fa..6985c99 100644 --- a/src/OutputMode/WindowsInk/Pointer/WinInkAbsolutePointer.cs +++ b/src/OutputMode/WindowsInk/Pointer/WinInkAbsolutePointer.cs @@ -21,6 +21,7 @@ namespace VoiDPlugins.OutputMode if (pos == _prev) return; + SetInternalPosition(pos); Instance.EnableButtonBit((int)WindowsInkButtonFlags.InRange); pos *= _conversionFactor; RawPointer->X = (ushort)pos.X; diff --git a/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs b/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs index 708747a..e5643e5 100644 --- a/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs +++ b/src/OutputMode/WindowsInk/Pointer/WinInkBasePointer.cs @@ -14,6 +14,7 @@ namespace VoiDPlugins.OutputMode { private readonly IVirtualScreen _screen; private ThinVMultiAbsPointer? _osPointer; + private Vector2 _internalPos; protected DigitizerInputReport* RawPointer { get; } protected VMultiInstance Instance { get; } protected SharedStore SharedStore { get; } @@ -73,7 +74,7 @@ namespace VoiDPlugins.OutputMode public void Reset() { if (_osPointer is not null && !ForcedSync) - _osPointer.SetPosition(new Vector2(RawPointer->X, RawPointer->Y)); + SyncOSCursor(); } public void Flush() @@ -83,10 +84,19 @@ namespace VoiDPlugins.OutputMode Dirty = false; if (ForcedSync) - _osPointer?.SetPosition(new Vector2(RawPointer->X, RawPointer->Y)); - + SyncOSCursor(); Instance.Write(); } } + + protected void SetInternalPosition(Vector2 pos) + { + _internalPos = pos; + } + + private void SyncOSCursor() + { + _osPointer?.SetPosition(_internalPos); + } } } \ No newline at end of file diff --git a/src/OutputMode/WindowsInk/Pointer/WinInkRelativePointer.cs b/src/OutputMode/WindowsInk/Pointer/WinInkRelativePointer.cs index 9aeb166..a6578f3 100644 --- a/src/OutputMode/WindowsInk/Pointer/WinInkRelativePointer.cs +++ b/src/OutputMode/WindowsInk/Pointer/WinInkRelativePointer.cs @@ -28,6 +28,7 @@ namespace VoiDPlugins.OutputMode delta += _error; _error = new Vector2(delta.X % 1, delta.Y % 1); _currentPoint = Vector2.Clamp(_currentPoint + delta, Vector2.Zero, _maxPoint); + SetInternalPosition(_currentPoint); RawPointer->X = (ushort)_currentPoint.X; RawPointer->Y = (ushort)_currentPoint.Y; Dirty = true;