From: Pekka Paalanen <pekka.paala...@collabora.co.uk>

Print a note that calibration got skipped if the input device supports a
calibration matrix but there is no associated output to compute it from.
Helps with debugging touchscreen calibration issues.

The code is reorganized and commented a bit, but this does not change
the behaviour.

Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk>
---
 libweston/libinput-device.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/libweston/libinput-device.c b/libweston/libinput-device.c
index 9b2577b6..48bfd6f1 100644
--- a/libweston/libinput-device.c
+++ b/libweston/libinput-device.c
@@ -463,21 +463,29 @@ evdev_device_set_calibration(struct evdev_device *device)
        float calibration[6];
        enum libinput_config_status status;
 
-       if (!device->output)
+       if (!libinput_device_config_calibration_has_matrix(device->device))
+               return;
+
+       /* If LIBINPUT_CALIBRATION_MATRIX was set to non-identity, we will not
+        * override it with WL_CALIBRATION. It also means we don't need an
+        * output to load a calibration. */
+       if (libinput_device_config_calibration_get_default_matrix(
+                                                         device->device,
+                                                         calibration) != 0)
+               return;
+
+       if (!device->output) {
+               weston_log("input device %s has no enabled output associated "
+                          "(%s named), skipping calibration for now.\n",
+                          sysname, device->output_name ?: "none");
                return;
+       }
 
        width = device->output->width;
        height = device->output->height;
        if (width == 0 || height == 0)
                return;
 
-       /* If libinput has a pre-set calibration matrix, don't override it */
-       if (!libinput_device_config_calibration_has_matrix(device->device) ||
-           libinput_device_config_calibration_get_default_matrix(
-                                                         device->device,
-                                                         calibration) != 0)
-               return;
-
        udev = udev_new();
        if (!udev)
                return;
-- 
2.16.1

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to