On Mon, Dec 18, 2017 at 04:53:58PM -0800, Jason Gerecke wrote: > The HAL daemon used by RHEL6/CentOS6 does not play nicely with input > devices that advertise unsupported EV_SW events. Devices with such > an event will fail in the middle of the probe process, preventing > the X server from being able to hotplug the device. The SW_MUTE_DEVICE > event used by the Cintiq Pro touchscreen is such an event. > > To work around this limitation, we can define an fdi configuration file > which resets the "button.has_state" property prior to probe. Because > HAL only runs the failing code when this property is true, the device > is able to finish the probe process just as though it never had the > unsupported switch in the first place. Resetting this property does > prevent HAL from being able to monitor the switch state, but that is > not considered a problem. > > Since HAL is long-since deprecated, it doesn't make sense to install > this configuration file on systems which don't require it. This > commit also adds logic to configure.ac so that only systems which still > use HAL will install this file. > > Signed-off-by: Jason Gerecke <jason.gere...@wacom.com> > --- > Changes from v1: > * Squashed 1st and 2nd patches together > * "wacom.fdi" goes back into the "else" case instead of "if USE_HAL_FDI" > * Spelling fix > > conf/Makefile.am | 9 +++++++-- > conf/wacom-preprobe.fdi | 17 +++++++++++++++++ > configure.ac | 15 +++++++++++++++ > 3 files changed, 39 insertions(+), 2 deletions(-) > create mode 100644 conf/wacom-preprobe.fdi > > diff --git a/conf/Makefile.am b/conf/Makefile.am > index f7abdd0..c478916 100644 > --- a/conf/Makefile.am > +++ b/conf/Makefile.am > @@ -3,8 +3,13 @@ CLEANFILES= > if HAS_XORG_CONF_DIR > dist_config_DATA = 70-wacom.conf > else > -fdidir = $(datadir)/hal/fdi/policy/20thirdparty > -dist_fdi_DATA = wacom.fdi > +fdipolicydir = $(datadir)/hal/fdi/policy/20thirdparty > +dist_fdipolicy_DATA = wacom.fdi > +endif > + > +if USE_HAL_FDI > +fdipreprobedir = $(datadir)/hal/fdi/preprobe/20thirdparty > +dist_fdipreprobe_DATA = wacom-preprobe.fdi > endif > > if HAVE_SYSTEMD_UNIT_DIR > diff --git a/conf/wacom-preprobe.fdi b/conf/wacom-preprobe.fdi > new file mode 100644 > index 0000000..bcf860a > --- /dev/null > +++ b/conf/wacom-preprobe.fdi > @@ -0,0 +1,17 @@ > +<?xml version="1.0" encoding="UTF-8"?> > + > +<deviceinfo version="0.2"> > + <device> > + > + <!-- Some Wacom devices (e.g. Cintiq Pro) have an EV_SW event which is > + unsupported by HAL. To prevent the input prober from failing > + on this event (hal/hald/linux/probing/probe-input.c:79) we > + should pretend that it doesn't exist. --> > + <match key="info.capabilities" contains="button"> > + <match key="info.product" contains_outof="Wacom;WACOM"> > + <merge key="button.has_state" type="bool">false</merge> > + </match> > + </match> > + > + </device> > +</deviceinfo> > diff --git a/configure.ac b/configure.ac > index b17cbe0..71ec76a 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -107,6 +107,21 @@ AC_ARG_WITH([xorg-conf-dir], > AC_SUBST(configdir) > AM_CONDITIONAL(HAS_XORG_CONF_DIR, [test "x$configdir" != "x"]) > > +AC_ARG_ENABLE(hal-fdi, AS_HELP_STRING([--enable-hal-fdi], > + [Install HAL fdi configuration files (default: > auto)]), > + [USE_HAL_FDI=$enableval], > + [USE_HAL_FDI=auto])
sorry to be picky, but I think this should be a different option name. beause right now, even if you specify --enable-hal-fdi we still install the xorg.conf snippet but not the .fdi. given the quirk that this is, I think we should make this --enable-hal-fdi-preprobe-quirk and put a link to a bug/wiki page in the help where the quirk is explained. otherwise, this patch looks good, thanks. Cheers, Peter > +if test "x$USE_HAL_FDI" = xauto ; then > + AC_CHECK_PROG([LSHAL], [lshal], [yes], [no]) > + AC_CHECK_PROG([HAL_SET_PROPERTY], [hal-set-property], [yes], [no]) > + AS_IF([test "x$LSHAL" = "xyes" -a "x$HAL_SET_PROPERTY" = "xyes"], > + [USE_HAL_FDI=yes], > + [USE_HAL_FDI=no]) > +fi > +AC_MSG_CHECKING([if HAL files should be installed]) > +AC_MSG_RESULT($USE_HAL_FDI) > +AM_CONDITIONAL(USE_HAL_FDI, [test "x$USE_HAL_FDI" = xyes]) > + > AC_ARG_ENABLE(fuzz-interface, AS_HELP_STRING([--enable-fuzz-interface], > [Enable xsetwacom to take NUL-separated commands > from stdin (default: no)]), > [FUZZINTERFACE=$enableval], > -- > 2.15.1 > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel