On Wed, Mar 12, 2014 at 8:12 AM, Hans de Goede <hdego...@redhat.com> wrote: > This mostly consists of skipping common fd handling when server managed fds > are in used, the rest is handled by xf86OpenSerial and our wcmClose > xf86CloseSerial wrapper. > > Signed-off-by: Hans de Goede <hdego...@redhat.com> > ---
I threw together a small virtual machine with the xserver from git, and noticed that after applying this patch some tools have trouble being spawned. I see the stylus device getting hotplugged, and then sucessfully creating a dependent eraser tool. The dependent cursor and pad tools that follow afterward throw an error while being created. The EVIOCGVERSION ioctl in usbDetect appears to be failing with EBADF. The file descriptor for these tools matches that of the stylus/eraser, so I'm a little confused at why we'd get EBADF at that point in time. Jason --- Now instead of four in the eights place / you’ve got three, ‘Cause you added one / (That is to say, eight) to the two, / But you can’t take seven from three, / So you look at the sixty-fours.... > src/wcmConfig.c | 5 ++++- > src/xf86Wacom.c | 9 +++++++++ > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/src/wcmConfig.c b/src/wcmConfig.c > index d19b9b4..9a3c8d7 100644 > --- a/src/wcmConfig.c > +++ b/src/wcmConfig.c > @@ -634,7 +634,10 @@ InputDriverRec WACOM = > wcmUninit, /* un-init */ > NULL, /* module */ > #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12 > - default_options > + default_options, > +#endif > +#ifdef XI86_DRV_CAP_SERVER_FD > + XI86_DRV_CAP_SERVER_FD, > #endif > }; > > diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c > index 3057d7a..4f41d64 100644 > --- a/src/xf86Wacom.c > +++ b/src/xf86Wacom.c > @@ -578,6 +578,10 @@ static int wcmDevOpen(DeviceIntPtr pWcm) > > DBG(10, priv, "\n"); > > + /* If fd management is done by the server, skip common fd handling */ > + if (pInfo->flags & XI86_SERVER_FD) > + goto got_fd; > + > /* open file, if not already open */ > if (common->fd_refs == 0) > { > @@ -610,6 +614,7 @@ static int wcmDevOpen(DeviceIntPtr pWcm) > common->fd_refs++; > } > > +got_fd: > /* start the tablet data */ > if (model->Start && (model->Start(pInfo) != Success)) > return !Success; > @@ -754,6 +759,10 @@ static void wcmDevClose(InputInfoPtr pInfo) > WacomDevicePtr priv = (WacomDevicePtr)pInfo->private; > WacomCommonPtr common = priv->common; > > + /* If fd management is done by the server, skip common fd handling */ > + if (pInfo->flags & XI86_SERVER_FD) > + return; > + > DBG(4, priv, "Wacom number of open devices = %d\n", common->fd_refs); > > if (pInfo->fd >= 0) > -- > 1.9.0 > > ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/13534_NeoTech _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel