[PATCH 2/2] xfree86: handle xorg.conf devices with logind

Laércio de Sousa lbsousajr at gmail.com
Tue Mar 11 03:37:24 PDT 2014


Hi there!

Could this other one by Oleg Samarin be related (except for the xf86Bus.c
patch, which I've sent previously and is already under review)?

http://thread.gmane.org/gmane.comp.freedesktop.xorg.devel/37377

CANTATE DOMINO CANTICUM NOVUM
QUIA MIRABILIA FECIT

Laércio


2014-03-11 4:09 GMT-03:00 Hans de Goede <hdegoede at redhat.com>:

> Hi,
>
> On 03/11/2014 05:32 AM, Peter Hutterer wrote:
> > Only devices from the config backend have their attributes set, devices
> from
> > the xorg.conf only have Option "Device". That option is also set by the
> > config backend, so use it.
> >
> > And since the config backend sets our major/minor but xorg.conf devices
> don't
> > have that set, make sure we try to stat it first where needed.
> >
> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>
> Looks good:
>
> Reviewed-by: Hans de Goede <hdegoede at redhat.com>
>
> Regards,
>
> Hans
>
>
> > ---
> > Fixes a crash when running with hotplug disabled and fixed devices in the
> > xorg.conf
> >
> >  hw/xfree86/common/xf86Xinput.c | 22 ++++++++++++++++++++--
> >  1 file changed, 20 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/xfree86/common/xf86Xinput.c
> b/hw/xfree86/common/xf86Xinput.c
> > index 7c3e479..36b92a9 100644
> > --- a/hw/xfree86/common/xf86Xinput.c
> > +++ b/hw/xfree86/common/xf86Xinput.c
> > @@ -81,6 +81,7 @@
> >
> >  #include <stdarg.h>
> >  #include <stdint.h>             /* for int64_t */
> > +#include <sys/stat.h>
> >  #include <unistd.h>
> >
> >  #include "mi.h"
> > @@ -804,6 +805,18 @@ xf86InputDevicePostInit(DeviceIntPtr dev)
> >      return Success;
> >  }
> >
> > +static void
> > +xf86stat(const char *path, int *maj, int *min)
> > +{
> > +    struct stat st;
> > +
> > +    if (stat(path, &st) == -1)
> > +        return;
> > +
> > +    *maj = major(st.st_rdev);
> > +    *min = minor(st.st_rdev);
> > +}
> > +
> >  /**
> >   * Create a new input device, activate and enable it.
> >   *
> > @@ -828,6 +841,7 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr
> *pdev, BOOL enable)
> >      DeviceIntPtr dev = NULL;
> >      Bool paused;
> >      int rval;
> > +    const char *path;
> >
> >      /* Memory leak for every attached device if we don't
> >       * test if the module is already loaded first */
> > @@ -841,9 +855,13 @@ xf86NewInputDevice(InputInfoPtr pInfo, DeviceIntPtr
> *pdev, BOOL enable)
> >          goto unwind;
> >      }
> >
> > -    if (drv->capabilities & XI86_DRV_CAP_SERVER_FD) {
> > +    path = xf86CheckStrOption(pInfo->options, "Device", NULL);
> > +    if (path && pInfo->major == 0 && pInfo->minor == 0)
> > +        xf86stat(path, &pInfo->major, &pInfo->minor);
> > +
> > +    if (path && (drv->capabilities & XI86_DRV_CAP_SERVER_FD)){
> >          int fd = systemd_logind_take_fd(pInfo->major, pInfo->minor,
> > -                                        pInfo->attrs->device, &paused);
> > +                                        path, &paused);
> >          if (fd != -1) {
> >              if (paused) {
> >                  /* Put on new_input_devices list for delayed probe */
> >
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.x.org/archives/xorg-devel/attachments/20140311/cee1ff43/attachment.html>


More information about the xorg-devel mailing list