Hello community, here is the log from the commit of package xf86-input-wacom for openSUSE:Factory checked in at 2017-03-22 23:17:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xf86-input-wacom (Old) and /work/SRC/openSUSE:Factory/.xf86-input-wacom.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xf86-input-wacom" Wed Mar 22 23:17:13 2017 rev:24 rq:481107 version:0.34.2 Changes: -------- --- /work/SRC/openSUSE:Factory/xf86-input-wacom/xf86-input-wacom.changes 2017-03-18 20:48:16.789179747 +0100 +++ /work/SRC/openSUSE:Factory/.xf86-input-wacom.new/xf86-input-wacom.changes 2017-03-22 23:17:14.828558354 +0100 @@ -1,0 +2,14 @@ +Sat Mar 18 20:51:47 UTC 2017 - [email protected] + +- Version update to 0.34.2: + * Prevent xf86-input-wacom from binding to pure-keyboard devices + * refer KeySyms defined by keysymdef.h in man page + * Make sibling device name matching slightly more lenient +- Remove upstreamed patch: + * U_conf-rename-to-70-wacom.conf.patch +- Update patch to allow make check to pass, we add option: + * n_01-Add-option-to-enable-logging.patch +- Run tests +- Drop support for older distros as we care about leap+ + +------------------------------------------------------------------- Old: ---- U_conf-rename-to-70-wacom.conf.patch xf86-input-wacom-0.32.0.tar.bz2 New: ---- xf86-input-wacom-0.34.2.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xf86-input-wacom.spec ++++++ --- /var/tmp/diff_new_pack.zFrnfU/_old 2017-03-22 23:17:16.072382163 +0100 +++ /var/tmp/diff_new_pack.zFrnfU/_new 2017-03-22 23:17:16.076381596 +0100 @@ -16,29 +16,22 @@ # -%define install_serial 1 -%if 0%( test -d %{_libexecdir}/udev/rules.d && echo "1" ) > 0 -%define _udevrulesdir %{_libexecdir}/udev/rules.d -%else -%define _udevrulesdir /lib/udev/rules.d -%endif Name: xf86-input-wacom -Version: 0.32.0 +Version: 0.34.2 Release: 0 Summary: Wacom input driver for the Xorg X server License: GPL-2.0+ Group: System/X11/Servers/XF86_4 Url: http://sourceforge.net/apps/mediawiki/linuxwacom/index.php?title=Xf86-input-wacom Source0: http://downloads.sourceforge.net/project/linuxwacom/xf86-input-wacom/%{name}-%{version}.tar.bz2 -Patch0: U_conf-rename-to-70-wacom.conf.patch Patch7: n_01-Add-option-to-enable-logging.patch Patch8: n_02-Log-PROXIMITY-LOW-LEVEL-events.patch Patch9: n_03-Log-PRESSURE-low-level-events.patch Patch10: n_04-Log-BUTTON-HIGH-LEVEL-events.patch # For directory ownership BuildRequires: libtool -BuildRequires: pkg-config BuildRequires: pkgconfig +BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(inputproto) BuildRequires: pkgconfig(kbproto) BuildRequires: pkgconfig(libudev) @@ -53,7 +46,7 @@ BuildRequires: pkgconfig(xproto) BuildRequires: pkgconfig(xrandr) Requires: linuxconsoletools -Requires: udev +Requires: pkgconfig(udev) Supplements: xorg-x11-server # This was part of the xorg-x11-driver-input package up to version 7.6 Conflicts: xorg-x11-driver-input <= 7.6 @@ -64,11 +57,6 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build ExcludeArch: s390 s390x %{x11_abi_xinput_req} -%if 0%{?suse_version} > 1230 -BuildRequires: systemd-rpm-macros -%else -BuildRequires: systemd -%endif %description wacom is an X input driver and utilities for Wacom devices. @@ -85,7 +73,6 @@ %prep %setup -q -%patch0 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p1 @@ -93,24 +80,30 @@ %build autoreconf -fi -%configure --with-xorg-conf-dir=%{_sysconfdir}/X11/xorg.conf.d --enable-logging --with-systemd-unit-dir=%{_unitdir} --with-udev-rules-dir=%{_udevrulesdir} +%configure \ + --with-xorg-conf-dir=%{_sysconfdir}/X11/xorg.conf.d \ + --enable-logging \ + --with-systemd-unit-dir=%{_unitdir} \ + --with-udev-rules-dir=%{_udevrulesdir} \ + --disable-silent-rules make %{?_smp_mflags} %install %make_install find %{buildroot} -type f -name "*.la" -delete -print mv %{buildroot}%{_udevrulesdir}/wacom.rules %{buildroot}%{_udevrulesdir}/65-wacom.rules -# if we don't package these remove them so no debuginfo files will be generated -%{!?install_serial: rm %{buildroot}%{_bindir}/isdv4-serial-inputattach %{buildroot}%{_bindir}/isdv4-serial-debugger} + +%check +make %{?_smp_mflags} check + +%pre +%service_add_pre [email protected] %post +%service_add_post [email protected] test -n "$FIRST_ARG" || FIRST_ARG=$1 if [ $FIRST_ARG -eq 1 ]; then -%if 0%{?suse_version} > 1230 %udev_rules_update -%else - udevadm control --reload >/dev/null 2>&1 || : \ -%endif %{_bindir}/systemctl daemon-reload >/dev/null 2>&1 || : fi # re-plug the input devices @@ -121,13 +114,10 @@ %service_del_preun [email protected] %postun +%service_del_postun [email protected] test -n "$FIRST_ARG" || FIRST_ARG=$1 if [ $FIRST_ARG -le 1 ]; then -%if 0%{?suse_version} > 1230 %udev_rules_update -%else - udevadm control --reload >/dev/null 2>&1 || : \ -%endif %{_bindir}/systemctl daemon-reload >/dev/null 2>&1 || : fi # re-plug the input devices @@ -137,15 +127,15 @@ %files %defattr(-,root,root) %doc AUTHORS ChangeLog GPL README -%{!?install_serial:%exclude} %{_udevrulesdir}/65-wacom.rules -%{!?install_serial:%exclude} %{_unitdir}/[email protected] +%{_udevrulesdir}/65-wacom.rules +%{_unitdir}/[email protected] %config %{_sysconfdir}/X11/xorg.conf.d/70-wacom.conf %dir %{_libdir}/xorg/modules/input %{_libdir}/xorg/modules/input/wacom_drv.so %{_bindir}/xsetwacom %{_mandir}/man1/xsetwacom.1%{?ext_man} %{_mandir}/man4/wacom.4%{?ext_man} -%{?install_serial:%{_bindir}/isdv4-serial-inputattach} +%{_bindir}/isdv4-serial-inputattach %files devel %defattr(-,root,root) @@ -154,7 +144,7 @@ %{_includedir}/xorg/wacom-properties.h %{_includedir}/xorg/wacom-util.h # not useful for most people -%{?install_serial:%{_bindir}/isdv4-serial-debugger} +%{_bindir}/isdv4-serial-debugger %{_libdir}/pkgconfig/xorg-wacom.pc %changelog ++++++ n_01-Add-option-to-enable-logging.patch ++++++ --- /var/tmp/diff_new_pack.zFrnfU/_old 2017-03-22 23:17:16.104377631 +0100 +++ /var/tmp/diff_new_pack.zFrnfU/_new 2017-03-22 23:17:16.108377064 +0100 @@ -29,10 +29,10 @@ tools/xsetwacom.c | 10 ++++++++++ 11 files changed, 177 insertions(+), 3 deletions(-) -Index: xf86-input-wacom-0.30.0/configure.ac +Index: xf86-input-wacom-0.34.2/configure.ac =================================================================== ---- xf86-input-wacom-0.30.0.orig/configure.ac -+++ xf86-input-wacom-0.30.0/configure.ac +--- xf86-input-wacom-0.34.2.orig/configure.ac ++++ xf86-input-wacom-0.34.2/configure.ac @@ -87,6 +87,17 @@ if test "x$DEBUGGING" = xyes; then AC_DEFINE(DEBUG, 1, [Enable debugging code]) fi @@ -51,10 +51,10 @@ # Define a configure option for an alternate input module directory AC_ARG_WITH(xorg-module-dir, AS_HELP_STRING([--with-xorg-module-dir=DIR], -Index: xf86-input-wacom-0.30.0/include/wacom-properties.h +Index: xf86-input-wacom-0.34.2/include/wacom-properties.h =================================================================== ---- xf86-input-wacom-0.30.0.orig/include/wacom-properties.h -+++ xf86-input-wacom-0.30.0/include/wacom-properties.h +--- xf86-input-wacom-0.34.2.orig/include/wacom-properties.h ++++ xf86-input-wacom-0.34.2/include/wacom-properties.h @@ -111,6 +111,15 @@ */ #define WACOM_PROP_PRESSURE_RECAL "Wacom Pressure Recalibration" @@ -71,10 +71,10 @@ /* The following are tool types used by the driver in WACOM_PROP_TOOL_TYPE * or in the 'type' field for XI1 clients. Clients may check for one of * these types to identify tool types. -Index: xf86-input-wacom-0.30.0/man/wacom.man +Index: xf86-input-wacom-0.34.2/man/wacom.man =================================================================== ---- xf86-input-wacom-0.30.0.orig/man/wacom.man -+++ xf86-input-wacom-0.30.0/man/wacom.man +--- xf86-input-wacom-0.34.2.orig/man/wacom.man ++++ xf86-input-wacom-0.34.2/man/wacom.man @@ -269,6 +269,25 @@ initial pressure reading may be unequal good pen. If the consecutive pressure readings are not higher than the initial pressure by a threshold no button event will be generated. @@ -101,11 +101,11 @@ .RE .SH "TOUCH GESTURES" .SS Single finger (1FG) -Index: xf86-input-wacom-0.30.0/man/xsetwacom.man +Index: xf86-input-wacom-0.34.2/man/xsetwacom.man =================================================================== ---- xf86-input-wacom-0.30.0.orig/man/xsetwacom.man -+++ xf86-input-wacom-0.30.0/man/xsetwacom.man -@@ -266,7 +266,24 @@ initial pressure reading may be unequal +--- xf86-input-wacom-0.34.2.orig/man/xsetwacom.man ++++ xf86-input-wacom-0.34.2/man/xsetwacom.man +@@ -273,7 +273,24 @@ initial pressure reading may be unequal good pen. If the consecutive pressure readings are not higher than the initial pressure by a threshold no button event will be generated. This option allows to disable the recalibration. Default: on @@ -131,10 +131,10 @@ .SH "AUTHORS" Peter Hutterer <[email protected]> -Index: xf86-input-wacom-0.30.0/src/wcmCommon.c +Index: xf86-input-wacom-0.34.2/src/wcmCommon.c =================================================================== ---- xf86-input-wacom-0.30.0.orig/src/wcmCommon.c -+++ xf86-input-wacom-0.30.0/src/wcmCommon.c +--- xf86-input-wacom-0.34.2.orig/src/wcmCommon.c ++++ xf86-input-wacom-0.34.2/src/wcmCommon.c @@ -27,6 +27,9 @@ #include "wcmTouchFilter.h" #include <xkbsrv.h> @@ -181,7 +181,7 @@ /***************************************************************************** * wcmSendButtons -- * Send button events by comparing the current button mask with the -@@ -1468,6 +1500,9 @@ WacomCommonPtr wcmNewCommon(void) +@@ -1469,6 +1501,9 @@ WacomCommonPtr wcmNewCommon(void) common->wcmRawSample = DEFAULT_SAMPLES; /* number of raw data to be used to for filtering */ common->wcmPressureRecalibration = 1; @@ -191,11 +191,11 @@ return common; } -Index: xf86-input-wacom-0.30.0/src/wcmConfig.c +Index: xf86-input-wacom-0.34.2/src/wcmConfig.c =================================================================== ---- xf86-input-wacom-0.30.0.orig/src/wcmConfig.c -+++ xf86-input-wacom-0.30.0/src/wcmConfig.c -@@ -637,6 +637,10 @@ static int wcmPreInit(InputDriverPtr drv +--- xf86-input-wacom-0.34.2.orig/src/wcmConfig.c ++++ xf86-input-wacom-0.34.2/src/wcmConfig.c +@@ -646,6 +646,10 @@ static int wcmPreInit(InputDriverPtr drv common->debugLevel = xf86SetIntOption(pInfo->options, "CommonDBG", common->debugLevel); @@ -206,11 +206,11 @@ oldname = strdup(pInfo->name); if (wcmIsHotpluggedDevice(pInfo)) -Index: xf86-input-wacom-0.30.0/src/wcmUSB.c +Index: xf86-input-wacom-0.34.2/src/wcmUSB.c =================================================================== ---- xf86-input-wacom-0.30.0.orig/src/wcmUSB.c -+++ xf86-input-wacom-0.30.0/src/wcmUSB.c -@@ -1128,6 +1128,31 @@ static int usbIdToType(int id) +--- xf86-input-wacom-0.34.2.orig/src/wcmUSB.c ++++ xf86-input-wacom-0.34.2/src/wcmUSB.c +@@ -1138,6 +1138,31 @@ static int usbIdToType(int id) return type; } @@ -242,10 +242,10 @@ /** * Find the tool type (STYLUS_ID, etc.) based on the device_id. * -Index: xf86-input-wacom-0.30.0/src/wcmXCommand.c +Index: xf86-input-wacom-0.34.2/src/wcmXCommand.c =================================================================== ---- xf86-input-wacom-0.30.0.orig/src/wcmXCommand.c -+++ xf86-input-wacom-0.30.0/src/wcmXCommand.c +--- xf86-input-wacom-0.34.2.orig/src/wcmXCommand.c ++++ xf86-input-wacom-0.34.2/src/wcmXCommand.c @@ -99,6 +99,9 @@ static Atom prop_tooltype; static Atom prop_btnactions; static Atom prop_product_id; @@ -256,7 +256,7 @@ #ifdef DEBUG static Atom prop_debuglevels; #endif -@@ -316,7 +319,10 @@ void InitWcmDeviceProperties(InputInfoPt +@@ -337,7 +340,10 @@ void InitWcmDeviceProperties(InputInfoPt values[0] = common->vendor_id; values[1] = common->tablet_id; prop_product_id = InitWcmAtom(pInfo->dev, XI_PROP_PRODUCT_ID, XA_INTEGER, 32, 2, values); @@ -268,7 +268,7 @@ #ifdef DEBUG values[0] = priv->debugLevel; values[1] = common->debugLevel; -@@ -918,6 +924,20 @@ int wcmSetProperty(DeviceIntPtr dev, Ato +@@ -951,6 +957,20 @@ int wcmSetProperty(DeviceIntPtr dev, Ato common->debugLevel = values[1]; } #endif @@ -289,11 +289,11 @@ } else if (property == prop_btnactions) { int nbuttons = priv->nbuttons < 4 ? priv->nbuttons : priv->nbuttons + 4; -Index: xf86-input-wacom-0.30.0/src/xf86Wacom.h +Index: xf86-input-wacom-0.34.2/src/xf86Wacom.h =================================================================== ---- xf86-input-wacom-0.30.0.orig/src/xf86Wacom.h -+++ xf86-input-wacom-0.30.0/src/xf86Wacom.h -@@ -65,6 +65,28 @@ +--- xf86-input-wacom-0.34.2.orig/src/xf86Wacom.h ++++ xf86-input-wacom-0.34.2/src/xf86Wacom.h +@@ -69,6 +69,28 @@ #define DBG(lvl, priv, ...) #endif @@ -322,11 +322,11 @@ /****************************************************************************** * WacomModule - all globals are packed in a single structure to keep the * global namespaces as clean as possible. -Index: xf86-input-wacom-0.30.0/src/xf86WacomDefs.h +Index: xf86-input-wacom-0.34.2/src/xf86WacomDefs.h =================================================================== ---- xf86-input-wacom-0.30.0.orig/src/xf86WacomDefs.h -+++ xf86-input-wacom-0.30.0/src/xf86WacomDefs.h -@@ -462,7 +462,9 @@ struct _WacomCommonRec +--- xf86-input-wacom-0.34.2.orig/src/xf86WacomDefs.h ++++ xf86-input-wacom-0.34.2/src/xf86WacomDefs.h +@@ -460,7 +460,9 @@ struct _WacomCommonRec int wcmRawSample; /* Number of raw data used to filter an event */ int wcmPressureRecalibration; /* Determine if pressure recalibration of worn pens should be performed */ @@ -337,10 +337,10 @@ int bufpos; /* position with buffer */ unsigned char buffer[BUFFER_SIZE]; /* data read from device */ -Index: xf86-input-wacom-0.30.0/tools/xsetwacom.c +Index: xf86-input-wacom-0.34.2/tools/xsetwacom.c =================================================================== ---- xf86-input-wacom-0.30.0.orig/tools/xsetwacom.c -+++ xf86-input-wacom-0.30.0/tools/xsetwacom.c +--- xf86-input-wacom-0.34.2.orig/tools/xsetwacom.c ++++ xf86-input-wacom-0.34.2/tools/xsetwacom.c @@ -158,6 +158,16 @@ static param_t parameters[] = .arg_count = 1, }, @@ -358,3 +358,12 @@ .name = "Suppress", .x11name = "Suppress", .desc = "Number of points trimmed (default is 2). ", +@@ -2974,7 +2984,7 @@ static void test_parameter_number(void) + * deprecated them. + * Numbers include trailing NULL entry. + */ +- assert(ARRAY_SIZE(parameters) == 39); ++ assert(ARRAY_SIZE(parameters) == 40); + assert(ARRAY_SIZE(deprecated_parameters) == 17); + } + ++++++ xf86-input-wacom-0.32.0.tar.bz2 -> xf86-input-wacom-0.34.2.tar.bz2 ++++++ ++++ 1912 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/ChangeLog new/xf86-input-wacom-0.34.2/ChangeLog --- old/xf86-input-wacom-0.32.0/ChangeLog 2015-11-24 00:48:04.000000000 +0100 +++ new/xf86-input-wacom-0.34.2/ChangeLog 2017-03-08 23:31:32.000000000 +0100 @@ -1,3 +1,468 @@ +commit 267e74cd1325f250185ced951914220bc4287ecf +Author: Peter Hutterer <[email protected]> +Date: Thu Mar 9 08:30:39 2017 +1000 + + wacom 0.34.2 + + Signed-off-by: Peter Hutterer <[email protected]> + +commit 64991c8b8f8e6fadb8843960d89570d81d470b63 +Author: Peter Hutterer <[email protected]> +Date: Thu Mar 9 08:28:36 2017 +1000 + + test: add TimerCancel to fake symbols + + Fixes distcheck + + Signed-off-by: Peter Hutterer <[email protected]> + +commit da26ba09c91241c432765de3e18ae4f216749029 +Author: Peter Hutterer <[email protected]> +Date: Thu Mar 9 07:11:18 2017 +1000 + + wacom 0.34.1 + + Signed-off-by: Peter Hutterer <[email protected]> + +commit de650d6224b353ee5596f5ce65de8059db5cd289 +Author: Peter Hutterer <[email protected]> +Date: Fri Feb 24 14:11:35 2017 +1000 + + Cancel timers on DEVICE_OFF + + Otherwise we run the risk of having a timer trigger after we removed the + device. Since we pass InputInfoPtrs and WacomDevicePtrs to the timers as + arguments, these may have been freed by the time a timer triggers. + + Signed-off-by: Peter Hutterer <[email protected]> + Acked-by: Jason Gerecke <[email protected]> + +commit f65d97362813ea89d18e5049ad87bc468ec30f85 +Author: Peter Hutterer <[email protected]> +Date: Thu Feb 23 09:47:27 2017 +1000 + + Revert to Update properties with a timer func + + This was required when we only had the SIGIO handler because sending events + allocates memory and things break. Now with the input thread we *can* send + events from within the thread but it can mess up other delivery. + + https://bugs.freedesktop.org/show_bug.cgi?id=99887 + + Signed-off-by: Peter Hutterer <[email protected]> + Acked-by: Jason Gerecke <[email protected]> + +commit 23f9586779f94cacb899120ef426d8fcd1647dcb +Author: Ping Cheng <[email protected]> +Date: Fri Feb 10 21:53:01 2017 -0800 + + Make sibling device name matching slightly more lenient + + The wcmIsSiblingDevice function uses several tricks to try and determine + if two devices should be considered siblings. If its 'logical_only' + parameter is false, this includes comparing device names. Device name + comparison is complicated by the fact that suffixes are added on by + the X and kernel drivers. To deal with this, the wcmSplitName function + tries to split a device name into three pieces: its "basename" that + describes the model, its "subdevice" name that describes the interface, + and its "tool" name which describes the X11 tool. + + Spliting the name is a somewhat kludgy process which does not properly + handle the device names for the MobileStudio Pro or Cintiq Pro. The + kernel reads the name of these devices directly from the hardware's + descriptors, and the names are slightly different between the pen and + touch interfaces (the touch device has an extra "Touch" suffix). + + This patch tweaks how wcmSplitName breaks apart device names in order + to handle the MobileStudio Pro and Cintiq Pro. Specifically, it now + allows the "subdevice" to contain an arbitrary number of "Pen", "Finger", + :Touch", or "Pad" suffixes. For the MobileStudio Pro and Cintiq Pro, + this should allow the "basename" that is considered for sibling device + matches to be identical between both the pen and touch interfaces. + + Signed-off-by: Jason Gerecke <[email protected]> + Signed-off-by: Ping Cheng <[email protected]> + Signed-off-by: Peter Hutterer <[email protected]> + +commit f0dedf7a610ac97bc45738492b98ce4f1e0514ec +Author: Jason Gerecke <[email protected]> +Date: Wed Jan 18 09:00:10 2017 -0800 + + tests: Fix compilation under ABI 25 and greater + + The X server recently deprecated xf86BlockSIGIO and xf86UnblockSIGIO and + simultaneously defined them inline within xf86.h. The new inline definition + causes problems both because fake-symbols.c will end up redefining them, + and because the function bodies reference a symbol that does not get included + when building the tests. To fix these errors, update fake-symbols.c with + updated include guards and a definition of the undefined symbols. + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit 6ff54b3020268f7baf8f1e748a6e278126472c58 +Author: Jason Gerecke <[email protected]> +Date: Mon Dec 5 11:14:08 2016 -0800 + + wacom 0.34.0 + + Signed-off-by: Jason Gerecke <[email protected]> + +commit 3ad7e9e6bfce19f630fc2902dfcceb53b912ae1f +Author: Jason Gerecke <[email protected]> +Date: Fri Nov 18 15:21:58 2016 -0800 + + wacom 0.33.99.1 + + Signed-off-by: Jason Gerecke <[email protected]> + +commit 051a406583a93cad2ec34a3fb03885237cd1a23e +Author: Jason Gerecke <[email protected]> +Date: Tue Nov 1 09:02:21 2016 -0700 + + Add missing newline to log message + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit 5bd8f70b9b3d6266e4c8e3c0ffd408d2c2e3c365 +Author: Jason Gerecke <[email protected]> +Date: Fri Nov 11 08:43:31 2016 -0800 + + Further reduce arbitration priority of cursor devices + + Cursor (puck) devices are typically left on the sensor and can emit + spurious events that can potentially cause the driver to steal "active" + status from another tool. In the past we'd only considered the case where + the active tool was a touch but it is reasonable to extend this logic to + other tool types. If a cursor emits a spurious event in the middle of a + pen dragging, for example, the drag will momentarily stop as the pen is + temporarily sent out of prox -- with potentially disasterous results. + Additionally, when the pen "returns" in prox on the next event, any + currently-applied pressure will be taken as the preload and result in + incorrect pressure scaling until the pen is removed from contact. + + This commit removes the "IsTouch" conditions from the handling of + spurious cursor events in check_arbitrated_control. The result is that a + cursor will not be granted "active" status in preference to any other + tool (and will drop "active" status if gained after 100ms and while + no buttons are pressed). + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit 9433019e82b6e3ac5c2ca21ae4fabbb8a6756e38 +Author: Jason Gerecke <[email protected]> +Date: Tue Nov 1 10:55:58 2016 -0700 + + Allow cursor devices to maintain "active" status while buttons are down + + Cursor (puck) tools tend to be left on the sensor, preventing us from + being able to rely solely on proximity information to determine if + they are being actively used. In the past we've used the amount of time + since the last event as an indicator of activity and allowed other + devices to grab control of the pointer if more than 100 milliseconds had + elapsed since the cursor's last event. Although this seems to work well, + there is another indicator of activity which should not be ignored: + button state. If a user is pressing a button on their cursor tool, it + should be considered active even if the 100ms timeout has been exceeded. + Not doing so could potentially allow another tool to grab "active" + status and have our driver send a button-up message and stop an in- + progress drag. + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit 5f5479a4f195e11a7bb708019afb299cf7a29741 +Author: Jason Gerecke <[email protected]> +Date: Mon Oct 31 18:14:24 2016 -0700 + + Lazily allocate pressure curve table + + Now that the pressure curve contains 65K points it takes up quite a bit + of memory, especially considering that the pressure curve may not need + to exist for some devices (e.g. pads) and may just be the default linear + curve even for those where it should exist. To reduce the amount of + memory used, we now lazily allocate space for the pressure curve tables + only when they are set to a non-default curve. + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit 3e56ce4429d9053da3b873f8717b830e3bdc5ea4 +Author: Jason Gerecke <[email protected]> +Date: Tue Jun 14 10:42:29 2016 -0700 + + Increase full-scale pressure range from 0..2047 to 0..65535 + + The driver has historically normalized the pressure range of all kernel + devices to 0..2047 rather than using their native range to keep things + like the application of the pressure curve simple. Pens that report more + than 2048 pressure levels are also normalized down to this range though, + reducing their precision. In order to accomodate the new 8K pen (and any + future pens with even higher precision), this patch bumps up the full- + scale range to be 0..65535. This number was chosen both because it far + exceeds anything currently known about, and also because it matches the + normalization range used over the wire by the Wayland tablet protocol. + + Note that the WACOM_PROP_PRESSURE_THRESHOLD value has been tied to the + normalized (2048-level) pressure range for some time, meaning that we + cannot simply change the range without causing a change in the perceived + threshold for users. To ensure compatibility, the value is interpreted + as a fraction of 2048 and then scaled to the actual normalization range. + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit 54c125b28479ff88903647c2dce1d49daa3402df +Author: Jason Gerecke <[email protected]> +Date: Fri Oct 7 09:20:34 2016 -0700 + + Read TouchRing axis range from kernel instead of hardcoding + + The TouchRing on the MobileStudio Pro has a range of only 0-35 instead + of 0-17 like prior devices. Because we hardcode an assumed range, the + driver mistakenly believes the jump from 35 to 0 (or 0 to 35, depending + on direction) when the user completes a revolution is actually caused + by the user reversing their finger direction. By reading the range from + the kernel, we can avoid this situation. + + Note that the ABS_WHEEL axis is also used by (legacy) combined pen/pad + devices with a range corresponding to the puck fingerwheel. We need to + be careful to not read the value in these cases since it would lead to + erroneous behavior in existing setups. Devices with a range range + different from 0-71 will hopefully not be widely used on kernels prior + to 3.17 where pen and pad were split into seperate devices since there + is no way (short of peeking at the VID:PID or name) to have them work + correctly in the combined case. + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + Reviewed-by: Ping Cheng <[email protected]> + +commit b61d1711e9a2d6c647341e8ea0119521fd200d62 +Author: Peter Hutterer <[email protected]> +Date: Thu Aug 11 13:47:35 2016 +1000 + + Make DEVICE_CLOSE a noop + + The server guarantees that DEVICE_OFF is called for any previously enabled + device, so we don't really have anything to do here. And since the input + thread addition to the server we can't safely call xf86RemoveEnabledDevice() + twice for the same device. + + Signed-off-by: Peter Hutterer <[email protected]> + Tested-by: Ping Cheng <[email protected]> + +commit bae283c8c91f6e064e727887da79e91e5c7c5f19 +Author: Peter Hutterer <[email protected]> +Date: Tue Aug 9 15:39:46 2016 +1000 + + Lock the input thread while creating a new device + + Don't process events while we're creating a new device so we don't start + processing events halfway between the new device being set up. + + Signed-off-by: Peter Hutterer <[email protected]> + Tested-by: Ping Cheng <[email protected]> + +commit ce912d8bba63faabe5d60a9f467c714511a835f7 +Author: Peter Hutterer <[email protected]> +Date: Thu Jun 2 09:23:57 2016 +1000 + + Handle the input ABI 23 - removal of xf86BlockSIGIO + + Input is now handled in a separate thread in the server when a device is added + through xf86AddEnabledDevice(). Previously that was in a sigio handler and we + have a bunch of workarounds to avoid calling things from within the signal + handler. With the new API these aren't needed, so split those callbacks and + call them directly where needed. + + Signed-off-by: Peter Hutterer <[email protected]> + Tested-by: Ping Cheng <[email protected]> + +commit 97d86e150c23108b4dbc99dbb8338aec60eea39c +Author: Ping Cheng <[email protected]> +Date: Fri Aug 5 18:27:55 2016 -0700 + + xsetwacom: refer KeySyms defined by keysymdef.h in man page + + xsetwacom accepts keys in X11 KeySyms format. To make the interface + user friendly, we mapped a set of modifiers to aliases that can be + recognized by most users. But, there are a few less recognizable or + confusing keys/modifiers left. This patch tells users where to find + the X11 KeySyms they are looking for. + + Signed-off-by: Ping Cheng <[email protected]> + Signed-off-by: Peter Hutterer <[email protected]> + +commit d54db63e716317bb336ddf444ab8034353913db7 +Author: Ping Cheng <[email protected]> +Date: Thu Aug 4 10:49:52 2016 -0700 + + xsetwacom: Add return to special key alias list + + return is a popular key assignment which was not added to the + special key list. Although Return would work since it is the + key name, we add return anyway to make users happy. + + Enter/enter for KP_Enter could have achieved the same purpose. + But, it confuses users (and some developers ;). + + Signed-off-by: Ping Cheng <[email protected]> + Tested-by: Kelly Price <[email protected]> + +commit b16b68a9302ce19226d78eed0e1fcb530f372506 +Author: Jason Gerecke <[email protected]> +Date: Fri May 13 15:32:27 2016 -0700 + + wacom 0.33.0 + + Signed-off-by: Jason Gerecke <[email protected]> + +commit f4763d1985330bb966908113bf3bd0b55d68372c +Author: Jason Gerecke <[email protected]> +Date: Wed May 4 09:26:58 2016 -0700 + + wacom 0.32.99.1 + + Signed-off-by: Jason Gerecke <[email protected]> + +commit 0da5cd545e38079b62656a23835c4943af05dc92 +Author: Jason Gerecke <[email protected]> +Date: Wed Apr 27 10:10:27 2016 -0700 + + conf: rename to 70-wacom.conf + + This is part of a two-step solution, the other half is renaming the + xf86-input-libinput config snippet to sort lower than ours. + + Currently libinput picks up devices that are (for now) destined to the wacom + driver. Since the wacom driver is more of a leaf package than libinput, the + best option here is to make the wacom driver sort higher and let users + uninstall it when not needed. To avoid crowding the 90-* space where users + usually have custom config snippets, libinput will drop down to 60 and + wacom will bump up to 70. + + Fixes: https://sourceforge.net/p/linuxwacom/bugs/315/ + Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/4 + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit 7a2c6437015d9fec14915ef19dbb2b6894faaba2 +Author: Jason Gerecke <[email protected]> +Date: Wed Feb 24 10:43:24 2016 -0800 + + conf: Prevent xf86-input-wacom from binding to pure-keyboard devices + + The Wacom Bluetooth Keyboard matches the "Wacom class" and so is bound to the + xf86-input-wacom driver. This driver is not designed to work with keyboards, + so we narrow the set of devices our InputClasses will match. Because we need + to match tablets, touchpads, and touchscreens (pad devices are a special case + of tablet) but there is no way to specify an "or" match we duplicate existing + classes and assign one of the above types to each. + + Note that simply adding 'MatchIsKeyboard "false"' to our existing snippets + would cause devices like the Cintiq 24HDT Pad and Cintiq 27QHDT Pad from + binding to our driver since both are recognized as (partial) keyboards due + to the presence of KEY_* kernel events. + + Fixes: https://sourceforge.net/p/linuxwacom/bugs/294/ + Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/1 + + Signed-off-by: Jason Gerecke <[email protected]> + +commit 044e17da543493d65bd01152dcddcadbbfe5b8ee +Author: Jason Gerecke <[email protected]> +Date: Fri Apr 1 11:07:54 2016 -0700 + + isdv4: Use last-known event position in touch up events + + Old serial ISDv4 sensors that (still?!) use the driver-internal parsing + routines can inadvertantly send (0,0) coordinates to X on touch up. + Even if a sensor sends (0,0) as the touch up coordinate, the code in + wcmTouchFilter.c should do the right thing by only sending motion + eventions while the touch is down. This isn't the case when in-driver + gestures are disabled though, since motion events (specifically XI_TouchEnd) + will be sent for touch up events as well. + + To prevent potential (0,0) coordinates from being emitted on touch up + while in-driver gestures are disabled, we use the last-known touch + position as the current touch position. This mirrors what is done by + the standard input kernel driver (which leaves X/Y at its last known + position on touch up). + + Fixes: https://sourceforge.net/p/linuxwacom/bugs/312/ + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Ping Cheng <[email protected]> + +commit 3b0c093f507cb5e99be277606de1671b77572dab +Author: Jason Gerecke <[email protected]> +Date: Tue Jan 12 12:12:03 2016 -0800 + + xsetwacom: Use stderr for 'core' and 'displaytogle' deprecation notices + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit bccfc6faa243909538bf18af04e1308c3b9c208f +Author: Jason Gerecke <[email protected]> +Date: Tue Jan 19 08:55:36 2016 -0800 + + xsetwacom: Only print action name for "modetoggle" and "displaytoggle" + + Running "xsetwacom get" on a button which contain a "modetoggle" or + "displaytoggle" action will result in output which cannot be parsed + by "xsetwacom set". Both of these actions are treated like buttons, + printing extra data that is not expected by the "set" command. + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit e1df2c330db940c96030dafcab850fc167531113 +Author: Jason Gerecke <[email protected]> +Date: Tue Jan 12 12:15:35 2016 -0800 + + xsetwacom: Remove unnecessary static state from 'get_actions' + + The 'last_type' variable within 'get_actions' stores the type of the last + action encountered. When dealing with "key" or "button" actions, we use + that information to determine if we need to print out the action prefix + or not (if the type hasn't changed, its safe to leave the prefix out). + + For some reason, this variable was marked as 'static', which causes it + to retain its value across invocations. The function is only called once + for any given button, meaning that we improperly retain the "last_type" + across buttons. If the last action on a button is of e.g. type "key" and + the first action of the next button is as well, then the "key" prefix + will be missing from the printed output of that second button's actions. + Making this variable non-static fixes this issue and ensures each run + of the function is independent. + + Fixes: http://sourceforge.net/p/linuxwacom/bugs/303/ + Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/3 + + Signed-off-by: Jason Gerecke <[email protected]> + Reviewed-by: Peter Hutterer <[email protected]> + +commit d9119a8c412926b97fac364d32e2bade47d2c295 +Author: Peter Hutterer <[email protected]> +Date: Mon Dec 7 10:23:52 2015 +1000 + + release.sh: use -t flag to create a sf shell + + Signed-off-by: Peter Hutterer <[email protected]> + +commit 8978e7010f0ee39c43a9902fbbbbbbeb20da8152 +Author: Peter Hutterer <[email protected]> +Date: Mon Dec 7 10:18:58 2015 +1000 + + release.sh: fix syntax errors + + Signed-off-by: Peter Hutterer <[email protected]> + commit a626adda70bf7e514a6715ba0fe63874808ca5e0 Author: Jason Gerecke <[email protected]> Date: Mon Nov 23 15:20:02 2015 -0800 @@ -5691,7 +6156,7 @@ "%zd" in order to avoid the format string warning at compile time: xsetwacom.c:787:2: warning: format '%d' expects argument of type 'int', - but argument 2 has type 'long unsigned int' [-Wformat] + but argument 2 has type 'long unsigned int' [-Wformat] Signed-off-by: Eduard Hasenleithner <[email protected]> Signed-off-by: Peter Hutterer <[email protected]> @@ -6461,7 +6926,7 @@ Conflicts: - src/wcmXCommand.c + src/wcmXCommand.c Reported-by: Andrzej Giniewicz <[email protected]> Signed-off-by: Peter Hutterer <[email protected]> @@ -7252,7 +7717,7 @@ Conflicts: - src/wcmXCommand.c + src/wcmXCommand.c Reported-by: Michal Suchanek <[email protected]> Signed-off-by: Peter Hutterer <[email protected]> @@ -10788,10 +11253,10 @@ The three fields (name, id and type) are separated by tab characters to ease parsing. Example output is: - Wacom Intuos4 6x9 eraser id: 12 type: ERASER - Wacom Intuos4 6x9 cursor id: 13 type: CURSOR - Wacom Intuos4 6x9 pad id: 14 type: PAD - Wacom Intuos4 6x9 stylus id: 15 type: STYLUS + Wacom Intuos4 6x9 eraser id: 12 type: ERASER + Wacom Intuos4 6x9 cursor id: 13 type: CURSOR + Wacom Intuos4 6x9 pad id: 14 type: PAD + Wacom Intuos4 6x9 stylus id: 15 type: STYLUS Signed-off-by: Peter Hutterer <[email protected]> @@ -13885,7 +14350,7 @@ Conflicts: - src/wcmCommon.c + src/wcmCommon.c Signed-off-by: Peter Hutterer <[email protected]> @@ -13950,7 +14415,7 @@ Conflicts: - src/wcmCommon.c + src/wcmCommon.c Signed-off-by: Peter Hutterer <[email protected]> Reviewed-by: Ping Cheng <[email protected]> @@ -14150,7 +14615,7 @@ Conflicts: - src/xf86Wacom.c + src/xf86Wacom.c Signed-off-by: Peter Hutterer <[email protected]> Reviewed-by: Ping Cheng <[email protected]> @@ -14358,8 +14823,8 @@ Merge branch 'master' of git://people.freedesktop.org/~gnadon/xf86-input-wacom Conflicts: - configure.ac - man/Makefile.am + configure.ac + man/Makefile.am commit 370cd8bcce46a091da2479fdb8171b1b58a8616c Author: Peter Hutterer <[email protected]> @@ -17542,7 +18007,7 @@ Merge branch 'xsetwacom' Conflicts: - src/wcmXCommand.c + src/wcmXCommand.c commit bffe7c23591c0d1ae70e73a27fab669d4a190ade Author: Przemo Firszt <[email protected]> @@ -19046,9 +19511,9 @@ The default output for the driver loading is: (II) Module wacom: vendor="X.Org Foundation" - compiled for 1.6.99.901, module version = 0.9.1 - Module class: X.Org XInput Driver - ABI class: X.Org XInput driver, version 7.0 + compiled for 1.6.99.901, module version = 0.9.1 + Module class: X.Org XInput Driver + ABI class: X.Org XInput driver, version 7.0 where the module version is now filled in by the package version set in configure. An extra identification string is superfluous. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/conf/50-wacom.conf new/xf86-input-wacom-0.34.2/conf/50-wacom.conf --- old/xf86-input-wacom-0.32.0/conf/50-wacom.conf 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/conf/50-wacom.conf 1970-01-01 01:00:00.000000000 +0100 @@ -1,59 +0,0 @@ -Section "InputClass" - Identifier "Wacom USB device class" - MatchUSBID "056a:*" - MatchDevicePath "/dev/input/event*" - Driver "wacom" -EndSection - -Section "InputClass" - Identifier "Wacom PnP device class" - MatchPnPID "WACf*|WCOM*|WACM*|FUJ02e5|FUJ02e7|FUJ02e9" - MatchDevicePath "/dev/input/event*" - Driver "wacom" -EndSection - -Section "InputClass" - Identifier "Wacom class" - MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4" - MatchDevicePath "/dev/input/event*" - Driver "wacom" -EndSection - -Section "InputClass" - Identifier "Wacom serial class" - MatchProduct "Serial Wacom Tablet" - Driver "wacom" -EndSection - -Section "InputClass" - Identifier "Wacom serial class identifiers" - MatchProduct "WACf|FUJ02e5|FUJ02e7|FUJ02e9" - Driver "wacom" -EndSection - -# Hanwang tablets -Section "InputClass" - Identifier "Hanwang class" - MatchProduct "Hanwang" - MatchDevicePath "/dev/input/event*" - Driver "wacom" -EndSection - -# Waltop tablets -Section "InputClass" - Identifier "Waltop class" - MatchProduct "WALTOP" - MatchIsTablet "on" - MatchDevicePath "/dev/input/event*" - Driver "wacom" -EndSection - -# N-Trig Duosense Electromagnetic Digitizer -Section "InputClass" - Identifier "Wacom N-Trig class" - MatchProduct "HID 1b96:0001|N-Trig Pen|N-Trig DuoSense" - MatchDevicePath "/dev/input/event*" - Driver "wacom" - Option "Button2" "3" -EndSection - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/conf/70-wacom.conf new/xf86-input-wacom-0.34.2/conf/70-wacom.conf --- old/xf86-input-wacom-0.32.0/conf/70-wacom.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/xf86-input-wacom-0.34.2/conf/70-wacom.conf 2016-05-04 23:18:43.000000000 +0200 @@ -0,0 +1,103 @@ +# Some of the below input classes appear 3x times, once for each of +# "tablet", "touchscreen", and "touchpad" to ensure that the Wacom +# driver is not accidentally bound to other types of hardware that +# Wacom has made which are not handled by the wacom driver (e.g the +# Wacom Bluetooth Keyboard) +# +# https://sourceforge.net/p/linuxwacom/bugs/294/ + +Section "InputClass" + Identifier "Wacom USB tablet class" + MatchUSBID "056a:*" + MatchDevicePath "/dev/input/event*" + MatchIsTablet "true" + Driver "wacom" +EndSection + +Section "InputClass" + Identifier "Wacom USB touchscreen class" + MatchUSBID "056a:*" + MatchDevicePath "/dev/input/event*" + MatchIsTouchscreen "true" + Driver "wacom" +EndSection + +Section "InputClass" + Identifier "Wacom USB touchpad class" + MatchUSBID "056a:*" + MatchDevicePath "/dev/input/event*" + MatchIsTouchpad "true" + Driver "wacom" +EndSection + +Section "InputClass" + Identifier "Wacom tablet class" + MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4" + MatchDevicePath "/dev/input/event*" + MatchIsTablet "true" + Driver "wacom" +EndSection + +Section "InputClass" + Identifier "Wacom touchscreen class" + MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4" + MatchDevicePath "/dev/input/event*" + MatchIsTouchscreen "true" + Driver "wacom" +EndSection + +Section "InputClass" + Identifier "Wacom touchpad class" + MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4" + MatchDevicePath "/dev/input/event*" + MatchIsTouchpad "true" + Driver "wacom" +EndSection + +# Serial Wacom devices should always be one of tablet, touchscreen, or +# touchpad so we can safely get away with just one match section in +# these cases +Section "InputClass" + Identifier "Wacom PnP device class" + MatchPnPID "WACf*|WCOM*|WACM*|FUJ02e5|FUJ02e7|FUJ02e9" + MatchDevicePath "/dev/input/event*" + Driver "wacom" +EndSection + +Section "InputClass" + Identifier "Wacom serial class" + MatchProduct "Serial Wacom Tablet" + Driver "wacom" +EndSection + +Section "InputClass" + Identifier "Wacom serial class identifiers" + MatchProduct "WACf|FUJ02e5|FUJ02e7|FUJ02e9" + Driver "wacom" +EndSection + +# Hanwang tablets +Section "InputClass" + Identifier "Hanwang class" + MatchProduct "Hanwang" + MatchDevicePath "/dev/input/event*" + Driver "wacom" +EndSection + +# Waltop tablets +Section "InputClass" + Identifier "Waltop class" + MatchProduct "WALTOP" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "wacom" +EndSection + +# N-Trig Duosense Electromagnetic Digitizer +Section "InputClass" + Identifier "Wacom N-Trig class" + MatchProduct "HID 1b96:0001|N-Trig Pen|N-Trig DuoSense" + MatchDevicePath "/dev/input/event*" + Driver "wacom" + Option "Button2" "3" +EndSection diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/conf/Makefile.am new/xf86-input-wacom-0.34.2/conf/Makefile.am --- old/xf86-input-wacom-0.32.0/conf/Makefile.am 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/conf/Makefile.am 2016-05-04 23:18:43.000000000 +0200 @@ -1,7 +1,7 @@ CLEANFILES= if HAS_XORG_CONF_DIR -dist_config_DATA = 50-wacom.conf +dist_config_DATA = 70-wacom.conf else fdidir = $(datadir)/hal/fdi/policy/20thirdparty dist_fdi_DATA = wacom.fdi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/configure.ac new/xf86-input-wacom-0.34.2/configure.ac --- old/xf86-input-wacom-0.32.0/configure.ac 2015-11-24 00:19:40.000000000 +0100 +++ new/xf86-input-wacom-0.34.2/configure.ac 2017-03-08 23:29:47.000000000 +0100 @@ -23,7 +23,7 @@ # Initialize Autoconf AC_PREREQ([2.60]) AC_INIT([xf86-input-wacom], - [0.32.0], + [0.34.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xf86-input-wacom]) AC_CONFIG_MACRO_DIR([m4]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/m4/libtool.m4 new/xf86-input-wacom-0.34.2/m4/libtool.m4 --- old/xf86-input-wacom-0.32.0/m4/libtool.m4 2015-08-03 22:51:47.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/m4/libtool.m4 2015-11-25 06:31:45.000000000 +0100 @@ -2867,6 +2867,9 @@ # before this can be enabled. hardcode_into_libs=yes + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command @@ -2875,7 +2878,7 @@ # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/m4/ltsugar.m4 new/xf86-input-wacom-0.34.2/m4/ltsugar.m4 --- old/xf86-input-wacom-0.32.0/m4/ltsugar.m4 2015-08-03 22:51:47.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/m4/ltsugar.m4 2015-08-06 02:45:06.000000000 +0200 @@ -1,7 +1,6 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software -# Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives @@ -34,7 +33,7 @@ # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. +# Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], @@ -45,7 +44,7 @@ # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/m4/lt~obsolete.m4 new/xf86-input-wacom-0.34.2/m4/lt~obsolete.m4 --- old/xf86-input-wacom-0.32.0/m4/lt~obsolete.m4 2015-08-03 22:51:47.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/m4/lt~obsolete.m4 2015-08-06 02:45:06.000000000 +0200 @@ -1,7 +1,6 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives @@ -12,7 +11,7 @@ # These exist entirely to fool aclocal when bootstrapping libtool. # -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # @@ -26,7 +25,7 @@ # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/man/xsetwacom.man new/xf86-input-wacom-0.34.2/man/xsetwacom.man --- old/xf86-input-wacom-0.32.0/man/xsetwacom.man 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/man/xsetwacom.man 2016-08-08 02:06:24.000000000 +0200 @@ -109,7 +109,7 @@ Action mappings allow button presses to perform many events. They take the form of a string of keywords and arguments. -The "key" keyword is following by a list of key names. These can optionally +The "key" keyword is followed by a list of key names. These can optionally be preceded by "+" for press and "-" for release. If +/- is not given, press-and-release is assumed, except for modifier keys which are left pressed. Key names can be X11 KeySyms or some aliases such as 'shift' or 'f1' (the @@ -117,9 +117,16 @@ .B list modifiers command). -For example, "key +a +shift b -shift -a" converts the button into a series of -keystrokes, in this example "press a, press shift, press and release b, -release shift, release a". +To assign a key that is not in the modifiers list, use the KeySym in +/usr/include/X11/keysymdef.h with the XK_ prefix removed or its actual value +as is. For example, XK_BackSpace should be specified as "BackSpace". "0xff80" +can also be used to replace "BackSpace" since it's the unique KeySym value of +Backspace key. + +Here is a combined example: "key +a shift b shift -a 0xff0d" converts the +button into a series of keystrokes. In this example, "press a, press shift, +press and release b, release shift, release a, then press and release enter". +"key +a +shift b -shift -a 0xff0d" does the same thing. The "button" keyword is similar except that its arguments are X11 button numbers. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/wcmCommon.c new/xf86-input-wacom-0.34.2/src/wcmCommon.c --- old/xf86-input-wacom-0.32.0/src/wcmCommon.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/wcmCommon.c 2016-11-18 04:35:11.000000000 +0100 @@ -361,6 +361,7 @@ int first_val, int num_vals, int *valuators) { WacomDevicePtr priv = (WacomDevicePtr) pInfo->private; + WacomCommonPtr common = priv->common; int delta = 0, idx = 0; DBG(10, priv, "\n"); @@ -396,7 +397,7 @@ } /* emulate events for left touch ring */ - delta = getScrollDelta(ds->abswheel, priv->oldState.abswheel, MAX_PAD_RING, AXIS_INVERT); + delta = getScrollDelta(ds->abswheel, priv->oldState.abswheel, common->wcmMaxRing, AXIS_INVERT); idx = getWheelButton(delta, WHEEL_ABS_UP, WHEEL_ABS_DN); if (idx >= 0 && IsPad(priv) && priv->oldState.proximity == ds->proximity) { @@ -406,7 +407,7 @@ } /* emulate events for right touch ring */ - delta = getScrollDelta(ds->abswheel2, priv->oldState.abswheel2, MAX_PAD_RING, AXIS_INVERT); + delta = getScrollDelta(ds->abswheel2, priv->oldState.abswheel2, common->wcmMaxRing, AXIS_INVERT); idx = getWheelButton(delta, WHEEL2_ABS_UP, WHEEL2_ABS_DN); if (idx >= 0 && IsPad(priv) && priv->oldState.proximity == ds->proximity) { @@ -853,29 +854,38 @@ if (IsPad(priv)) { /* Pad may never be the "active" pointer controller */ + DBG(6, priv, "Event from pad; not yielding pointer control\n."); return FALSE; } if (active == NULL || active->oldState.device_id == ds->device_id) { - DBG(11, priv, "Same device ID as active; allowing access.\n"); + DBG(11, priv, "Event from active device; maintaining pointer control.\n"); return TRUE; } - else if (IsCursor(active) && IsTouch(priv)) { - /* Cursor devices are often left idle in range, so allow touch to - * grab control if the tool has not been used for some time. + else if (IsCursor(active)) { + /* Cursor devices are often left idle in range, so allow other devices + * to grab control if the tool has not been used for some time. */ - return (ds->time - active->oldState.time > 100); + Bool yield = (ds->time - active->oldState.time > 100) && (active->oldState.buttons == 0); + DBG(6, priv, "Currently-active cursor %s idle; %s pointer control.\n", + yield ? "is" : "is not", yield ? "yielding" : "not yielding"); + return yield; } - else if (IsTouch(active) && IsCursor(priv)) { + else if (IsCursor(priv)) { /* An otherwise idle cursor may still occasionally jitter and send - * events while the user is making active touches. Do not allow - * the cursor to grab control in this particular case. + * events while the user is actively using other tools or touching + * the device. Do not allow the cursor to grab control in this + * particular case. */ + DBG(6, priv, "Event from non-active cursor; not yielding pointer control.\n"); return FALSE; } else { /* Non-touch input has priority over touch in general */ - return !IsTouch(priv); + Bool yield = !IsTouch(priv); + DBG(6, priv, "Event from non-active %s device; %s pointer control.\n", + yield ? "non-touch" : "touch", yield ? "yielding" : "not yielding"); + return yield; } } @@ -1186,7 +1196,7 @@ if (priv->serial && filtered.serial_num != priv->serial) { DBG(10, priv, "serial number" - " is %u but your system configured %u", + " is %u but your system configured %u\n", filtered.serial_num, priv->serial); return; } @@ -1394,7 +1404,10 @@ p = min(FILTER_PRESSURE_RES, p); /* apply pressure curve function */ - return pDev->pPressCurve[p]; + if (pDev->pPressCurve == NULL) + return p; + else + return pDev->pPressCurve[p]; } /***************************************************************************** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/wcmConfig.c new/xf86-input-wacom-0.34.2/src/wcmConfig.c --- old/xf86-input-wacom-0.32.0/src/wcmConfig.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/wcmConfig.c 2017-02-12 22:26:06.000000000 +0100 @@ -320,10 +320,19 @@ { *a = '\0'; b = strrchr(name, ' '); - if (b && (!strcmp(b, " Pen") || !strcmp(b, " Finger") || !strcmp(b, " Pad"))) + + while (b) { - *b = '\0'; - strncat(subdevice, b+1, len-1); + if (!strcmp(b, " Pen") || !strcmp(b, " Finger") || + !strcmp(b, " Pad") || !strcmp(b, " Touch")) + { + *b = '\0'; + strncpy(subdevice, b+1, len-1); + subdevice[len-1] = '\0'; + b = strrchr(name, ' '); + } + else + b = NULL; } strncat(tool, a+1, len-1); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/wcmFilter.c new/xf86-input-wacom-0.34.2/src/wcmFilter.c --- old/xf86-input-wacom-0.32.0/src/wcmFilter.c 2015-04-24 17:12:03.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/wcmFilter.c 2017-03-08 03:31:05.000000000 +0100 @@ -54,23 +54,35 @@ void wcmSetPressureCurve(WacomDevicePtr pDev, int x0, int y0, int x1, int y1) { - int i; - /* sanity check values */ if (!wcmCheckPressureCurveValues(x0, y0, x1, y1)) return; - /* linear by default */ - for (i=0; i<=FILTER_PRESSURE_RES; ++i) - pDev->pPressCurve[i] = i; + /* A NULL pPressCurve indicates the (default) linear curve */ + if (x0 == 0 && y0 == 0 && x1 == 100 && y1 == 100) { + free(pDev->pPressCurve); + pDev->pPressCurve = NULL; + } + else if (!pDev->pPressCurve) { + pDev->pPressCurve = calloc(FILTER_PRESSURE_RES+1, sizeof(*pDev->pPressCurve)); + + if (!pDev->pPressCurve) { + LogMessageVerbSigSafe(X_WARNING, 0, + "Unable to allocate memory for pressure curve; using default.\n"); + x0 = 0; + y0 = 0; + x1 = 100; + y1 = 100; + } + } - /* draw bezier line from bottom-left to top-right using ctrl points */ - filterCurveToLine(pDev->pPressCurve, - FILTER_PRESSURE_RES, - 0.0, 0.0, /* bottom left */ - x0/100.0, y0/100.0, /* control point 1 */ - x1/100.0, y1/100.0, /* control point 2 */ - 1.0, 1.0); /* top right */ + if (pDev->pPressCurve) + filterCurveToLine(pDev->pPressCurve, + FILTER_PRESSURE_RES, + 0.0, 0.0, /* bottom left */ + x0/100.0, y0/100.0, /* control point 1 */ + x1/100.0, y1/100.0, /* control point 2 */ + 1.0, 1.0); /* top right */ pDev->nPressCtrl[0] = x0; pDev->nPressCtrl[1] = y0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/wcmISDV4.c new/xf86-input-wacom-0.34.2/src/wcmISDV4.c --- old/xf86-input-wacom-0.32.0/src/wcmISDV4.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/wcmISDV4.c 2016-04-26 02:18:52.000000000 +0200 @@ -625,8 +625,8 @@ return -1; } - ds->x = touchdata.x; - ds->y = touchdata.y; + ds->x = touchdata.status ? touchdata.x : last->x; + ds->y = touchdata.status ? touchdata.y : last->y; ds->proximity = touchdata.status; ds->device_type = TOUCH_ID; ds->device_id = TOUCH_DEVICE_ID; @@ -651,8 +651,8 @@ channel = 1; ds = &common->wcmChannel[channel].work; RESET_RELATIVE(*ds); - ds->x = touchdata.finger2.x; - ds->y = touchdata.finger2.y; + ds->x = touchdata.finger2.status ? touchdata.finger2.x : lastTemp->x; + ds->y = touchdata.finger2.status ? touchdata.finger2.y : lastTemp->y; ds->device_type = TOUCH_ID; ds->device_id = TOUCH_DEVICE_ID; ds->serial_num = 2; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/wcmUSB.c new/xf86-input-wacom-0.34.2/src/wcmUSB.c --- old/xf86-input-wacom-0.32.0/src/wcmUSB.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/wcmUSB.c 2016-11-18 04:35:11.000000000 +0100 @@ -652,6 +652,16 @@ common->wcmMaxStripX = absinfo.maximum; } + /* max touchring value for standalone pad tools */ + common->wcmMinRing = 0; + common->wcmMaxRing = 71; + if (!ISBITSET(ev,EV_MSC) && ISBITSET(abs, ABS_WHEEL) && + !ioctl(pInfo->fd, EVIOCGABS(ABS_WHEEL), &absinfo)) + { + common->wcmMinRing = absinfo.minimum; + common->wcmMaxRing = absinfo.maximum; + } + /* X tilt range */ if (ISBITSET(abs, ABS_TILT_X) && !ioctl(pInfo->fd, EVIOCGABS(ABS_TILT_X), &absinfo)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/wcmValidateDevice.c new/xf86-input-wacom-0.34.2/src/wcmValidateDevice.c --- old/xf86-input-wacom-0.32.0/src/wcmValidateDevice.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/wcmValidateDevice.c 2016-08-11 06:10:17.000000000 +0200 @@ -498,11 +498,19 @@ WacomHotplugInfo *hotplug_info = closure; DeviceIntPtr dev; /* dummy */ +#if HAVE_THREADED_INPUT + input_lock(); +#endif + NewInputDeviceRequest(hotplug_info->input_options, #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 9 hotplug_info->attrs, #endif &dev); +#if HAVE_THREADED_INPUT + input_unlock(); +#endif + input_option_free_list(&hotplug_info->input_options); #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 11 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/wcmXCommand.c new/xf86-input-wacom-0.34.2/src/wcmXCommand.c --- old/xf86-input-wacom-0.32.0/src/wcmXCommand.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/wcmXCommand.c 2017-03-01 05:35:13.000000000 +0100 @@ -104,6 +104,26 @@ #endif /** + * Calculate a user-visible pressure level from a driver-internal pressure + * level. Pressure settings exposed to the user assume a range of 0-2047 + * while the driver scales everything to a range of 0-FILTER_PRESSURE_RES. + */ +static inline int wcmInternalToUserPressure(int pressure) +{ + return pressure / (FILTER_PRESSURE_RES / 2048); +} + +/** + * Calculate a driver-internal pressure level from a user-visible pressure + * level. Pressure settings exposed to the user assume a range of 0-2047 + * while the driver scales everything to a range of 0-FILTER_PRESSURE_RES. + */ +static inline int wcmUserToInternalPressure(int pressure) +{ + return pressure * (FILTER_PRESSURE_RES / 2048); +} + +/** * Resets an arbitrary Action property, given a pointer to the old * handler and information about the new Action. */ @@ -256,6 +276,7 @@ } values[0] = (!common->wcmMaxZ) ? 0 : common->wcmThreshold; + values[0] = wcmInternalToUserPressure(values[0]); prop_threshold = InitWcmAtom(pInfo->dev, WACOM_PROP_PRESSURE_THRESHOLD, XA_INTEGER, 32, 1, values); values[0] = common->wcmSuppress; @@ -612,33 +633,42 @@ } } -static CARD32 -touchTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg) +static void +wcmSetHWTouchProperty(InputInfoPtr pInfo) { - InputInfoPtr pInfo = arg; WacomDevicePtr priv = pInfo->private; WacomCommonPtr common = priv->common; XIPropertyValuePtr prop; CARD8 prop_value; - int sigstate; int rc; - sigstate = xf86BlockSIGIO(); - rc = XIGetDeviceProperty(pInfo->dev, prop_hardware_touch, &prop); if (rc != Success || prop->format != 8 || prop->size != 1) { xf86Msg(X_ERROR, "%s: Failed to update hardware touch state.\n", pInfo->name); - return 0; + return; } prop_value = common->wcmHWTouchSwitchState; XIChangeDeviceProperty(pInfo->dev, prop_hardware_touch, XA_INTEGER, prop->format, PropModeReplace, prop->size, &prop_value, TRUE); +} + +static CARD32 +touchTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg) +{ + InputInfoPtr pInfo = arg; +#if !HAVE_THREADED_INPUT + int sigstate = xf86BlockSIGIO(); +#endif + + wcmSetHWTouchProperty(pInfo); +#if !HAVE_THREADED_INPUT xf86UnblockSIGIO(sigstate); +#endif return 0; } @@ -656,8 +686,8 @@ common->wcmHWTouchSwitchState = hw_touch; - /* This function is called during SIGIO. Schedule timer for property - * event delivery outside of signal handler. */ + /* This function is called during SIGIO/InputThread. Schedule timer + * for property event delivery by the main thread. */ priv->touch_timer = TimerSet(priv->touch_timer, 0 /* reltime */, 1, touchTimerFunc, priv->pInfo); } @@ -816,6 +846,7 @@ common->wcmCursorProxoutDist = value; } else if (property == prop_threshold) { + const INT32 MAXIMUM = wcmInternalToUserPressure(FILTER_PRESSURE_RES); INT32 value; if (prop->size != 1 || prop->format != 32) @@ -825,8 +856,10 @@ if (value == -1) value = DEFAULT_THRESHOLD; - else if ((value < 1) || (value > FILTER_PRESSURE_RES)) + else if ((value < 1) || (value > MAXIMUM)) return BadValue; + else + value = wcmUserToInternalPressure(value); if (!checkonly) common->wcmThreshold = value; @@ -1014,24 +1047,20 @@ return Success; } -static CARD32 -serialTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg) +static void +wcmSetSerialProperty(InputInfoPtr pInfo) { - InputInfoPtr pInfo = arg; WacomDevicePtr priv = pInfo->private; XIPropertyValuePtr prop; CARD32 prop_value[5]; - int sigstate; int rc; - sigstate = xf86BlockSIGIO(); - rc = XIGetDeviceProperty(pInfo->dev, prop_serials, &prop); if (rc != Success || prop->format != 32 || prop->size != 5) { xf86Msg(X_ERROR, "%s: Failed to update serial number.\n", pInfo->name); - return 0; + return; } memcpy(prop_value, prop->data, sizeof(prop_value)); @@ -1041,8 +1070,22 @@ XIChangeDeviceProperty(pInfo->dev, prop_serials, XA_INTEGER, prop->format, PropModeReplace, prop->size, prop_value, TRUE); +} + +static CARD32 +serialTimerFunc(OsTimerPtr timer, CARD32 now, pointer arg) +{ + InputInfoPtr pInfo = arg; + +#if !HAVE_THREADED_INPUT + int sigstate = xf86BlockSIGIO(); +#endif + wcmSetSerialProperty(pInfo); + +#if !HAVE_THREADED_INPUT xf86UnblockSIGIO(sigstate); +#endif return 0; } @@ -1058,8 +1101,8 @@ priv->cur_serial = serial; priv->cur_device_id = id; - /* This function is called during SIGIO. Schedule timer for property - * event delivery outside of signal handler. */ + /* This function is called during SIGIO/InputThread. Schedule timer + * for property event delivery by the main thread. */ priv->serial_timer = TimerSet(priv->serial_timer, 0 /* reltime */, 1, serialTimerFunc, pInfo); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/xf86Wacom.c new/xf86-input-wacom-0.34.2/src/xf86Wacom.c --- old/xf86-input-wacom-0.32.0/src/xf86Wacom.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/xf86Wacom.c 2017-02-24 05:04:55.000000000 +0100 @@ -282,8 +282,8 @@ { /* Touch ring */ label = XIGetKnownProperty(AXIS_LABEL_PROP_ABS_WHEEL); - min = MIN_PAD_RING; - max = MAX_PAD_RING; + min = common->wcmMinRing; + max = common->wcmMaxRing; } wcmInitAxis(pInfo->dev, index, label, min, max, res, min_res, max_res, mode); @@ -298,8 +298,8 @@ mode = Absolute; min_res = max_res = res = 1; - min = MIN_PAD_RING; - max = MAX_PAD_RING; + min = common->wcmMinRing; + max = common->wcmMaxRing; wcmInitAxis(pInfo->dev, index, label, min, max, res, min_res, max_res, mode); } @@ -854,7 +854,9 @@ break; case DEVICE_OFF: - case DEVICE_CLOSE: + TimerCancel(priv->tap_timer); + TimerCancel(priv->serial_timer); + TimerCancel(priv->touch_timer); wcmDisableTool(pWcm); wcmUnlinkTouchAndPen(pInfo); if (pInfo->fd >= 0) @@ -864,6 +866,8 @@ } pWcm->public.on = FALSE; break; + case DEVICE_CLOSE: + break; #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) * 100 + GET_ABI_MINOR(ABI_XINPUT_VERSION) >= 1901 case DEVICE_ABORT: break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/xf86Wacom.h new/xf86-input-wacom-0.34.2/src/xf86Wacom.h --- old/xf86-input-wacom-0.32.0/src/xf86Wacom.h 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/xf86Wacom.h 2016-08-11 06:09:45.000000000 +0200 @@ -40,6 +40,10 @@ #define LogMessageVerbSigSafe xf86MsgVerb #endif +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 23 +#define HAVE_THREADED_INPUT 1 +#endif + #ifndef SW_MUTE_DEVICE #define SW_MUTE_DEVICE 0x0e #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/src/xf86WacomDefs.h new/xf86-input-wacom-0.34.2/src/xf86WacomDefs.h --- old/xf86-input-wacom-0.32.0/src/xf86WacomDefs.h 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/src/xf86WacomDefs.h 2016-11-18 04:35:11.000000000 +0100 @@ -48,9 +48,6 @@ #define TILT_MIN -64 /* Minimum reported tilt value */ #define TILT_MAX 63 /* Maximum reported tilt value */ -#define MIN_PAD_RING 0 /* I4 absolute scroll ring min value */ -#define MAX_PAD_RING 71 /* I4 absolute scroll ring max value */ - /* I4 cursor tool has a rotation offset of 175 degrees */ #define INTUOS4_CURSOR_ROTATION_OFFSET 175 @@ -183,7 +180,7 @@ #define IsUSBDevice(common) ((common)->wcmDevCls == &gWacomUSBDevice) -#define FILTER_PRESSURE_RES 2048 /* maximum points in pressure curve */ +#define FILTER_PRESSURE_RES 65536 /* maximum points in pressure curve */ /* Tested result for setting the pressure threshold to a reasonable value */ #define THRESHOLD_TOLERANCE (FILTER_PRESSURE_RES / 125) #define DEFAULT_THRESHOLD (FILTER_PRESSURE_RES / 75) @@ -235,8 +232,8 @@ }; static const struct _WacomDeviceState OUTPROX_STATE = { - .abswheel = MAX_PAD_RING + 1, - .abswheel2 = MAX_PAD_RING + 1 + .abswheel = INT_MAX, + .abswheel2 = INT_MAX }; struct _WacomDeviceRec @@ -288,8 +285,7 @@ struct _WacomDeviceState oldState; /* previous state information */ int oldCursorHwProx; /* previous cursor hardware proximity */ - /* JEJ - filters */ - int pPressCurve[FILTER_PRESSURE_RES + 1]; /* pressure curve */ + int *pPressCurve; /* pressure curve */ int nPressCtrl[4]; /* control points for curve */ int minPressure; /* the minimum pressure a pen may hold */ int oldMinPressure; /* to record the last minPressure before going out of proximity */ @@ -436,6 +432,8 @@ int wcmMaxStripX; /* Maximum fingerstrip X */ int wcmMaxStripY; /* Maximum fingerstrip Y */ + int wcmMinRing; /* Minimum touchring value */ + int wcmMaxRing; /* Maximum touchring value */ WacomDevicePtr wcmDevices; /* list of devices sharing same port */ int wcmPktLength; /* length of a packet */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/test/fake-symbols.c new/xf86-input-wacom-0.34.2/test/fake-symbols.c --- old/xf86-input-wacom-0.32.0/test/fake-symbols.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/test/fake-symbols.c 2017-03-08 23:29:35.000000000 +0100 @@ -493,6 +493,11 @@ { } +void TimerCancel(OsTimerPtr timer) +{ +} + +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 24 int xf86BlockSIGIO (void) { @@ -503,6 +508,15 @@ xf86UnblockSIGIO (int wasset) { } +#else +void input_lock (void) +{ +} + +void input_unlock (void) +{ +} +#endif /* This is not the same as the X server one, but it'll do for the tests */ #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 14 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-wacom-0.32.0/tools/xsetwacom.c new/xf86-input-wacom-0.34.2/tools/xsetwacom.c --- old/xf86-input-wacom-0.32.0/tools/xsetwacom.c 2015-10-23 19:26:33.000000000 +0200 +++ new/xf86-input-wacom-0.34.2/tools/xsetwacom.c 2016-08-08 02:06:24.000000000 +0200 @@ -605,6 +605,8 @@ {"backspace", "BackSpace"}, {"Backspace", "BackSpace"}, + {"return", "Return"}, + {"tab", "Tab"}, {"PgUp", "Prior"}, {"PgDn", "Next"}, @@ -937,6 +939,9 @@ m = specialkeys; while(m->name) printf(" %s\n", m++->name); + + printf("Keys not listed above can be specified via their KeySyms." + " See the man page for details.\n"); } static void list(Display *dpy, int argc, char **argv) @@ -1026,7 +1031,7 @@ static int once_only = 1; if (once_only) { - printf ("Note: The \"core\" keyword is not supported anymore and " + fprintf(stderr, "Note: The \"core\" keyword is not supported anymore and " "will be ignored.\n"); once_only = 0; } @@ -1053,7 +1058,7 @@ static int once_only = 1; if (once_only) { - printf ("Note: The \"displaytoggle\" keyword is not supported " + fprintf(stderr, "Note: The \"displaytoggle\" keyword is not supported " "anymore and will be ignored.\n"); once_only = 0; } @@ -1951,6 +1956,7 @@ unsigned long nitems, bytes_after, *data; int i; char buff[1024] = {0}; + int last_type; prop = XInternAtom(dpy, param->prop_name, True); @@ -1979,9 +1985,9 @@ AnyPropertyType, &type, &format, &nitems, &bytes_after, (unsigned char**)&data); + last_type = 0; for (i = 0; i < nitems; i++) { - static int last_type; unsigned long action = data[i]; int current_type; int detail; @@ -2021,7 +2027,7 @@ if (current_type == AC_KEY) sprintf(str, "%c%s ", press_str, XKeysymToString(detail)); - else + else if (current_type == AC_BUTTON) sprintf(str, "%c%d ", press_str, detail); strcat(buff, str); last_type = current_type;
