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

Reply via email to