[PATCH v2 libinput 1/5] tablet: move the libwacom check for left-handed-ness into a helper function

Peter Hutterer peter.hutterer at who-t.net
Sun Apr 17 23:12:14 UTC 2016


On Fri, Apr 15, 2016 at 12:00:25PM +0100, Carlos Garnacho wrote:
> Hey!,
> 
> On Mon, Apr 11, 2016 at 5:15 AM, Peter Hutterer
> <peter.hutterer at who-t.net> wrote:
> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> > ---
> > Changes since v1:
> > - new in this version
> >
> >  src/evdev-tablet.c | 38 +-------------------------------------
> >  src/evdev.c        | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  src/evdev.h        |  3 +++
> >  3 files changed, 56 insertions(+), 37 deletions(-)
> >
> > diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c
> > index 9a1ac52..3c3ebcf 100644
> > --- a/src/evdev-tablet.c
> > +++ b/src/evdev-tablet.c
> > @@ -1571,45 +1571,9 @@ tablet_init_accel(struct tablet_dispatch *tablet, struct evdev_device *device)
> >  static void
> >  tablet_init_left_handed(struct evdev_device *device)
> >  {
> > -#if HAVE_LIBWACOM
> > -       struct libinput *libinput = device->base.seat->libinput;
> > -       WacomDeviceDatabase *db;
> > -       WacomDevice *d = NULL;
> > -       WacomError *error;
> > -       const char *devnode;
> > -
> > -       db = libwacom_database_new();
> > -       if (!db) {
> > -               log_info(libinput,
> > -                        "Failed to initialize libwacom context.\n");
> > -               return;
> > -       }
> > -       error = libwacom_error_new();
> > -       devnode = udev_device_get_devnode(device->udev_device);
> > -
> > -       d = libwacom_new_from_path(db,
> > -                                  devnode,
> > -                                  WFALLBACK_NONE,
> > -                                  error);
> > -
> > -       if (d) {
> > -               if (libwacom_is_reversible(d))
> > +       if (evdev_tablet_has_left_handed(device))
> >                     evdev_init_left_handed(device,
> >                                            tablet_change_to_left_handed);
> > -       } else if (libwacom_error_get_code(error) == WERROR_UNKNOWN_MODEL) {
> > -               log_info(libinput, "Tablet unknown to libwacom\n");
> > -       } else {
> > -               log_error(libinput,
> > -                         "libwacom error: %s\n",
> > -                         libwacom_error_get_message(error));
> > -       }
> > -
> > -       if (error)
> > -               libwacom_error_free(&error);
> > -       if (d)
> > -               libwacom_destroy(d);
> > -       libwacom_database_destroy(db);
> > -#endif
> >  }
> >
> >  static int
> > diff --git a/src/evdev.c b/src/evdev.c
> > index 6bb8986..a5511c5 100644
> > --- a/src/evdev.c
> > +++ b/src/evdev.c
> > @@ -43,6 +43,10 @@
> >  #include "filter.h"
> >  #include "libinput-private.h"
> >
> > +#if HAVE_LIBWACOM
> > +#include <libwacom/libwacom.h>
> > +#endif
> > +
> >  #define DEFAULT_WHEEL_CLICK_ANGLE 15
> >  #define DEFAULT_MIDDLE_BUTTON_SCROLL_TIMEOUT ms2us(200)
> >
> > @@ -2858,3 +2862,51 @@ evdev_device_destroy(struct evdev_device *device)
> >         free(device->mt.slots);
> >         free(device);
> >  }
> > +
> > +bool
> > +evdev_tablet_has_left_handed(struct evdev_device *device)
> > +{
> > +#if HAVE_LIBWACOM
> > +       struct libinput *libinput = device->base.seat->libinput;
> > +       WacomDeviceDatabase *db;
> > +       WacomDevice *d = NULL;
> > +       WacomError *error;
> > +       const char *devnode;
> > +       bool has_left_handed = false;
> > +
> > +       db = libwacom_database_new();
> > +       if (!db) {
> > +               log_info(libinput,
> > +                        "Failed to initialize libwacom context.\n");
> > +               goto out;
> > +       }
> > +
> > +       error = libwacom_error_new();
> > +       devnode = udev_device_get_devnode(device->udev_device);
> > +
> > +       d = libwacom_new_from_path(db,
> > +                                  devnode,
> > +                                  WFALLBACK_NONE,
> > +                                  error);
> > +
> > +       if (d) {
> > +               if (libwacom_is_reversible(d))
> > +                       has_left_handed = true;
> > +       } else if (libwacom_error_get_code(error) == WERROR_UNKNOWN_MODEL) {
> > +               log_info(libinput, "Tablet unknown to libwacom\n");
> > +       } else {
> > +               log_error(libinput,
> > +                         "libwacom error: %s\n",
> > +                         libwacom_error_get_message(error));
> > +       }
> > +
> > +       if (error)
> > +               libwacom_error_free(&error);
> > +       if (d)
> > +               libwacom_destroy(d);
> > +       libwacom_database_destroy(db);
> > +
> > +out:
> > +       return has_left_handed;
> > +#endif
> > +}
> 
> This function should have a return value (I guess false is safe?) if
> HAVE_LIBWACOM is not defined.

fixed, thanks.

Cheers,
   Peter


More information about the wayland-devel mailing list