diff --git a/config.h.meson b/config.h.meson index ef6de7e6c..6e16ed792 100644 --- a/config.h.meson +++ b/config.h.meson @@ -48,6 +48,9 @@ /* Building with libwacom for advanced tablet management */ #mesondefine HAVE_LIBWACOM +/* libwacom has get_num_rings() */ +#mesondefine HAVE_LIBWACOM_GET_NUM_RINGS + /* Building with libsystemd */ #mesondefine HAVE_LIBSYSTEMD diff --git a/meson.build b/meson.build index b3f127a0d..5b1b764a7 100644 --- a/meson.build +++ b/meson.build @@ -298,6 +298,10 @@ endif have_libwacom = get_option('libwacom') if have_libwacom libwacom_dep = dependency('libwacom', version: libwacom_req) + have_libwacom_get_num_rings = cc.has_function('libwacom_get_num_rings', + dependencies: libwacom_dep) +else + have_libwacom_get_num_rings = false endif have_pango_ft2 = get_option('pango_ft2') @@ -553,6 +557,7 @@ cdata.set('HAVE_EGL_DEVICE', have_egl_device) cdata.set('HAVE_WAYLAND_EGLSTREAM', have_wayland_eglstream) cdata.set('HAVE_LIBGUDEV', have_libgudev) cdata.set('HAVE_LIBWACOM', have_libwacom) +cdata.set('HAVE_LIBWACOM_GET_NUM_RINGS', have_libwacom_get_num_rings) cdata.set('HAVE_SM', have_sm) cdata.set('HAVE_STARTUP_NOTIFICATION', have_startup_notification) cdata.set('HAVE_INTROSPECTION', have_introspection) diff --git a/src/backends/x11/meta-input-device-x11.c b/src/backends/x11/meta-input-device-x11.c index 7d8854442..cc73a0c33 100644 --- a/src/backends/x11/meta-input-device-x11.c +++ b/src/backends/x11/meta-input-device-x11.c @@ -195,6 +195,20 @@ meta_input_device_x11_get_property (GObject *object, } } +#ifndef HAVE_LIBWACOM_GET_NUM_RINGS +static int +libwacom_get_num_rings (WacomDevice *device) +{ + if (libwacom_has_ring2 (device)) + return 2; + + if (libwacom_has_ring (device)) + return 1; + + return 0; +} +#endif + static int meta_input_device_x11_get_group_n_modes (ClutterInputDevice *device, int group) @@ -208,14 +222,14 @@ meta_input_device_x11_get_group_n_modes (ClutterInputDevice *device, { if (group == 0) { - if (libwacom_has_ring (wacom_device)) + if (libwacom_get_num_rings (wacom_device) >= 1) return libwacom_get_ring_num_modes (wacom_device); else if (libwacom_get_num_strips (wacom_device) >= 1) return libwacom_get_strips_num_modes (wacom_device); } else if (group == 1) { - if (libwacom_has_ring2 (wacom_device)) + if (libwacom_get_num_rings (wacom_device) >= 2) return libwacom_get_ring2_num_modes (wacom_device); else if (libwacom_get_num_strips (wacom_device) >= 2) return libwacom_get_strips_num_modes (wacom_device);