[Bf-blender-cvs] [38f65c5] master: Fix T48204: Generic Tablet on Linux - Erratic strokes with pressure sensitivity enabled.

Bastien Montagne noreply at git.blender.org
Thu May 19 20:34:50 CEST 2016


Commit: 38f65c500c1257bfdf586ae6b7b26cc1b77086ed
Author: Bastien Montagne
Date:   Thu May 19 20:30:48 2016 +0200
Branches: master
https://developer.blender.org/rB38f65c500c1257bfdf586ae6b7b26cc1b77086ed

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]).

===================================================================

M	intern/ghost/intern/GHOST_SystemX11.cpp

===================================================================

diff --git a/intern/ghost/intern/GHOST_SystemX11.cpp b/intern/ghost/intern/GHOST_SystemX11.cpp
index dde63ba..95dea38 100644
--- a/intern/ghost/intern/GHOST_SystemX11.cpp
+++ b/intern/ghost/intern/GHOST_SystemX11.cpp
@@ -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);




More information about the Bf-blender-cvs mailing list