Fix T48204: Generic Tablet on Linux - Erratic strokes with pressure sensitivity enabled.

Once and for all - I hope!

So, for the records: Xinput1 events' valuators have a first_axis and axis_count defining the 'range'
of valid axes for that event - but valid data in the valuator's array **always** start at zero
(which means that, if event reports first axis as being axis 2, axis 2's value is in axis_data[0]).
This commit is contained in:
Bastien Montagne 2016-05-19 20:30:48 +02:00
parent dedc995018
commit 38f65c500c
Notes: blender-bot 2024-03-25 12:30:38 +01:00
Referenced by issue #48204, Generic Tablet on Linux - Erratic strokes with pressure sensitivity enabled
1 changed files with 2 additions and 1 deletions

View File

@ -1239,7 +1239,8 @@ GHOST_SystemX11::processEvent(XEvent *xe)
* events). So we have to check which values this event actually contains!
*/
#define AXIS_VALUE_GET(axis, val) ((axis_first <= axis && axes_end > axis) && ((void)(val = data->axis_data[axis]), true))
#define AXIS_VALUE_GET(axis, val) \
((axis_first <= axis && axes_end > axis) && ((void)(val = data->axis_data[axis - axis_first]), true))
if (AXIS_VALUE_GET(2, axis_value)) {
window->GetTabletData()->Pressure = axis_value / ((float)m_xtablet.PressureLevels);