evdev_calibration_get_default_matrix(struct libinput_device *libinput_device,
float matrix[6])
{
- struct matrix m;
+ struct evdev_device *device = (struct evdev_device*)libinput_device;
- /* Always return the identity matrix for now. In the future, this
- should return the WL_CALIBRATION matrix defined as default
- matrix for this device */
- matrix_init_identity(&m);
- matrix_to_farray6(&m, matrix);
+ matrix_to_farray6(&device->abs.default_calibration, matrix);
- return !matrix_is_identity(&m);
+ return !matrix_is_identity(&device->abs.default_calibration);
}
struct evdev_dispatch_interface fallback_interface = {
matrix_init_identity(&device->abs.calibration);
matrix_init_identity(&device->abs.usermatrix);
+ matrix_init_identity(&device->abs.default_calibration);
if (evdev_configure_device(device) == -1)
goto err;
}
void
+evdev_device_set_default_calibration(struct evdev_device *device,
+ const float calibration[6])
+{
+ matrix_from_farray6(&device->abs.default_calibration, calibration);
+ evdev_device_calibrate(device, calibration);
+}
+
+void
evdev_device_calibrate(struct evdev_device *device,
const float calibration[6])
{
int apply_calibration;
struct matrix calibration;
+ struct matrix default_calibration; /* from LIBINPUT_CALIBRATION_MATRIX */
struct matrix usermatrix; /* as supplied by the caller */
} abs;
evdev_device_get_id_vendor(struct evdev_device *device);
void
+evdev_device_set_default_calibration(struct evdev_device *device,
+ const float calibration[6]);
+void
evdev_device_calibrate(struct evdev_device *device,
const float calibration[6]);
&calibration[3],
&calibration[4],
&calibration[5]) == 6) {
- evdev_device_calibrate(device, calibration);
+ evdev_device_set_default_calibration(device, calibration);
log_info(&input->base,
"Applying calibration: %f %f %f %f %f %f\n",
calibration[0],