[PATCH v2 synaptics] Disable GrabEventDevice by default
Hans de Goede
hdegoede at redhat.com
Fri Mar 21 03:10:18 PDT 2014
Hi,
On 03/21/2014 04:08 AM, Peter Hutterer wrote:
> This was required when we started supporting hotplugging to avoid duplicate
> events. These days the drawback of not being able to record events in the case
> of a bug is significant, possibly more so than whatever static
> configurations are still out there. Let's see how much pain this causes.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
The commit msg could use some updating since you've now fixed the problem with
existing static configs. Other then that this version indeed seems better:
Reviewed-by: Hans de Goede <hdegoede at redhat.com>
Regards,
Hans
> ---
> I thought about this some more and figured we might as well fix some of the
> pain ahead of time. If there is a static InputDevice section for a synaptics
> device, and AutoAddDevices is enabled (the default), just disabling
> GrabEventDevice _will_ cause duplicate devices.
>
> So here's a small but hopefully effective enough fix for that: only disable
> the grab if the synaptics device itself is hotplugged. The config backend
> (udev, hal, wscons) should make sure that we don't get the same device twice
> anyway.
>
> src/synaptics.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/src/synaptics.c b/src/synaptics.c
> index 07fd450..f4c1d4a 100644
> --- a/src/synaptics.c
> +++ b/src/synaptics.c
> @@ -576,6 +576,8 @@ set_default_parameters(InputInfoPtr pInfo)
> int width, height, diag, range;
> int horizHyst, vertHyst;
> int middle_button_timeout;
> + int grab_event_device = 0;
> + const char *source;
>
> /* The synaptics specs specify typical edge widths of 4% on x, and 5.4% on
> * y (page 7) [Synaptics TouchPad Interfacing Guide, 510-000080 - A
> @@ -747,7 +749,16 @@ set_default_parameters(InputInfoPtr pInfo)
> xf86SetRealOption(opts, "PressureMotionMinFactor", 1.0);
> pars->press_motion_max_factor =
> xf86SetRealOption(opts, "PressureMotionMaxFactor", 1.0);
> - pars->grab_event_device = xf86SetBoolOption(opts, "GrabEventDevice", TRUE);
> +
> + /* Only grab the device by default if it's not coming from a config
> + backend. This way we avoid the device being added twice and sending
> + duplicate events.
> + */
> + source = xf86CheckStrOption(opts, "_source", NULL);
> + if (source == NULL || strncmp(source, "server/", 7) != 0)
> + grab_event_device = TRUE;
> + pars->grab_event_device = xf86SetBoolOption(opts, "GrabEventDevice", grab_event_device);
> +
> pars->tap_and_drag_gesture =
> xf86SetBoolOption(opts, "TapAndDragGesture", TRUE);
> pars->resolution_horiz =
>
More information about the xorg-devel
mailing list