Revision 632b345 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Update tooltip, Tablet API can now be changed at runtime. |
Revision cbc1c83 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Remove Wintab logging. |
Revision a9d6eb8 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Add Wintab debug logging as a CMake option WITH_WINTAB_DEBUG. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision d9b0ef2 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Finish the comment's thought explaining pessimistic button ups events for Wintab. |
Revision 5badaa8 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Return of the Wintab refactor. Previously Wintab was handled by saving the most recent tablet pressure and tilt information and deferred appending tablet infromation to Windows mouse events. This caused synchronization issues evident at the beginning and ending of strokes where pressure and tilt were either ahead or behind in time from mouse button up or down events. This also dicarded swaths of data which resulted in blockly grease pencil lines most apparent when a context switch resulted in several coalesced mouse events. This patch changes the behavior of Wintab to instead rely entirely on Wintab information for pressure, tilt, position, and button input. Wintab has several design decisions and conventions which complicate relying soley on it's input while retaining current workflows reliant on non-API behavior. For example, many device optionally allow the user to map barrel buttons to non-mouse actions. These mappings may or may not modify the intended behavior when touching the stylus down, such as scroll vs alt mappings. This behavior is not exposed in the Wintab API, but Wintab will continue updating button state sans this necessary context. To work around the problem, this refactor synchronizations tablet input to Windows mouse down and up events, this captures events which should result in pen input while allowing events such as pen scrolling. Until a Windows mouse down event fires Wintab input is left unprocessed; when a Windows up event occurs Wintab is processed until a corresponding button up event is found. Wintab allows for either button state or changes to be reported, but not both. An earlier refactor tried to use button changes to let state to be managed by Wintab. This was replaced when it was found that button change events were unreliable at corner cases such as switching windows. It was also found that with Wacom drivers Wintab peek functions would modify events in the queue causing errant and loss of button events. For the latter stated reason this patch opts to read all Wintab events into a queue as they arrive, removing events as they become stale. This was chosen over using Wintab peek functions due to the afformentioned issue. As a bonus this seems to work better as it prevents the queue in Wintab from filling, thus neither a flood of events need to be handled when Wintab processing begins and a Wintab implementation need not be trusted to overwrite old events in it's queue. Maniphest Tasks: T75566 Differential Revision: https://developer.blender.org/D7840 |
Revision 0ee4b0b by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Before a wintab button event is generated, generate a GHOST mouse move event to the button down location as this should be a more accurate point of contact than the last mouse move event. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision 7599571 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Adding explanitory comment to explain why tablet API check is necessary for Pointer input even when Wintab should be preventing Pointer events. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision a080acc by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
When there are not associated button events, assume there is no button events until one is found. This prevents errant cursor moves that occur before the Wintab button event is reported. We need to skip these events because if no button event exists, we generate one assuming it will either arrive later in the Wintab queue or that the button was from a non-Wintab device. For the case that this was generated by a non-wintab device, such as buttons mapped to mouse on the tablet pad, these cursor move events can significantly move the cursor from the intended click position. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision 1f25235 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Clarify comment to be more specific so that in the future someone knows the issue with Wintab button events are more significant than simply setting what buttons should receive button up/down events during context initialization. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision efe3e4f by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Save Wintab packets to a local queue as WT_PACKET events arrive or when handling mouse input. This Wintab to mouse synchronization issues, and likely prevents queue exhaustion for some Wintab implmenetations. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision d58387c by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Correcting the type for indexing Wintab buttons. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision 14cddad by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Change updateWintab interface to include whether window is visible so that window intitialization can specify whether it will be visible regardless of whether it is yet visible. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision b98ea1b by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Revert "Mask all button down/up and switch back to using relative button input." This reverts commit 045aaf6f78f1fbb6e2bbefd234b7bae04844d42b. |
Revision c482107 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Fix type for physicalButton in wintabMouseToGhost. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision a6e3148 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Fix return value of WTPacketsGet. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision a5f3c0e by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Move assignments into initializer list for GHOST_EventButton and GHOST_EventCursor. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision 1b535e8 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Mask all button down/up and switch back to using relative button input. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision 3281507 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Document inline that PACKETDATA and PACKETMODE modify external headers to discourage reducing their scope to the only place they're used internally. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision 538a2ac by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Allow double button up, otherwise there may be a trailing 0 pressure line. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> |
Revision 7c84f25 by Nicholas Rishel October 30, 2020, 23:29 (GMT) |
Fix T75566 Button events now include tabletdata, so move is unnecessary. Generate mouse button events when the system has an event but Wintab did not find a correlated event. Only filter mouse button events, not Win32 Pointer events. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> Maniphest Tasks: T75566 Differential Revision: https://developer.blender.org/D7404 |
|
|
|


Master Commits
MiikaHweb | 2003-2021