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 <[email protected]>
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 <[email protected]> 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 = > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
