matrix_from_farray6(&transform, calibration);
device->abs.apply_calibration = !matrix_is_identity(&transform);
+ /* back up the user matrix so we can return it on request */
+ matrix_from_farray6(&device->abs.usermatrix, calibration);
+
if (!device->abs.apply_calibration) {
matrix_init_identity(&device->abs.calibration);
return;
* order.
*/
- /* back up the user matrix so we can return it on request */
- matrix_from_farray6(&device->abs.usermatrix, calibration);
-
/* Un-Normalize */
matrix_init_translate(&translate,
device->abs.absinfo_x->minimum,
}
END_TEST
+START_TEST(touch_calibration_config)
+{
+ struct litest_device *dev = litest_current_device();
+ float identity[6] = {1, 0, 0, 0, 1, 0};
+ float nonidentity[6] = {1, 2, 3, 4, 5, 6};
+ float matrix[6];
+ enum libinput_config_status status;
+ int rc;
+
+ rc = libinput_device_config_calibration_has_matrix(dev->libinput_device);
+ ck_assert_int_eq(rc, 1);
+
+ /* Twice so we have every to-fro combination */
+ for (int i = 0; i < 2; i++) {
+ status = libinput_device_config_calibration_set_matrix(dev->libinput_device, identity);
+ ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
+ libinput_device_config_calibration_get_matrix(dev->libinput_device, matrix);
+ ck_assert_int_eq(memcmp(matrix, identity, sizeof(matrix)), 0);
+
+ status = libinput_device_config_calibration_set_matrix(dev->libinput_device, nonidentity);
+ ck_assert_int_eq(status, LIBINPUT_CONFIG_STATUS_SUCCESS);
+ libinput_device_config_calibration_get_matrix(dev->libinput_device, matrix);
+ ck_assert_int_eq(memcmp(matrix, nonidentity, sizeof(matrix)), 0);
+ }
+
+}
+END_TEST
+
static int open_restricted(const char *path, int flags, void *data)
{
int fd;
litest_add("touch:calibration", touch_calibration_translation, LITEST_SINGLE_TOUCH, LITEST_TOUCHPAD);
litest_add_for_device("touch:calibration", touch_calibrated_screen_path, LITEST_CALIBRATED_TOUCHSCREEN);
litest_add_for_device("touch:calibration", touch_calibrated_screen_udev, LITEST_CALIBRATED_TOUCHSCREEN);
+ litest_add("touch:calibration", touch_calibration_config, LITEST_TOUCH, LITEST_ANY);
litest_add("touch:left-handed", touch_no_left_handed, LITEST_TOUCH, LITEST_ANY);