[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libinput: Changes to 'ubuntu'



 configure.ac                                                      |   10 
 debian/changelog                                                  |   43 
 debian/control                                                    |   41 
 debian/copyright                                                  |   49 
 debian/libinput-bin.install                                       |    1 
 debian/libinput10-udeb.install                                    |    1 
 debian/libinput10.symbols                                         |   18 
 debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch |   10 
 debian/patches/series                                             |    1 
 debian/patches/touch-point-orientation-size.patch                 |  128 --
 debian/patches/touchpad-add-a-middle-button-software-area.diff    |  302 ----
 debian/rules                                                      |   11 
 doc/Makefile.am                                                   |   13 
 doc/clickpad-softbuttons.dox                                      |   14 
 doc/page-hierarchy.dox                                            |    1 
 doc/svg/software-buttons.svg                                      |   30 
 doc/svg/tablet-interfaces.svg                                     |  325 +++++
 doc/svg/tablet-left-handed.svg                                    |  469 +++++++
 doc/tablet-support.dox                                            |   79 +
 doc/touchpad-jumping-cursors.dox                                  |   54 
 src/Makefile.am                                                   |    2 
 src/evdev-mt-touchpad-buttons.c                                   |   31 
 src/evdev-mt-touchpad-gestures.c                                  |    2 
 src/evdev-mt-touchpad.c                                           |   71 -
 src/evdev-mt-touchpad.h                                           |    3 
 src/evdev-tablet-pad.c                                            |  624 ++++++++++
 src/evdev-tablet-pad.h                                            |   69 +
 src/evdev-tablet.c                                                |   88 -
 src/evdev-tablet.h                                                |    2 
 src/evdev.c                                                       |  268 +++-
 src/evdev.h                                                       |   36 
 src/libinput-private.h                                            |   26 
 src/libinput-util.h                                               |    5 
 src/libinput.c                                                    |  257 ++++
 src/libinput.h                                                    |  363 +++++
 src/libinput.sym                                                  |   18 
 src/timer.c                                                       |    3 
 test/Makefile.am                                                  |    8 
 test/gestures.c                                                   |    8 
 test/keyboard.c                                                   |   42 
 test/litest-device-generic-singletouch.c                          |    1 
 test/litest-device-synaptics-x1-carbon-3rd.c                      |   11 
 test/litest-device-touchscreen-fuzz.c                             |   96 +
 test/litest-device-wacom-intuos3-pad.c                            |  117 +
 test/litest-device-wacom-intuos5-pad.c                            |  122 +
 test/litest-int.h                                                 |   16 
 test/litest.c                                                     |  272 ++++
 test/litest.h                                                     |  134 +-
 test/misc.c                                                       |   51 
 test/pad.c                                                        |  431 ++++++
 test/path.c                                                       |    2 
 test/pointer.c                                                    |  148 ++
 test/tablet.c                                                     |   72 +
 test/touch.c                                                      |   50 
 test/touchpad-buttons.c                                           |   30 
 test/touchpad.c                                                   |  112 +
 test/trackpoint.c                                                 |    1 
 tools/event-debug.c                                               |   91 +
 tools/event-gui.c                                                 |   46 
 tools/publish-doc                                                 |    9 
 udev/90-libinput-model-quirks.hwdb                                |   36 
 61 files changed, 4654 insertions(+), 720 deletions(-)

New commits:
commit e36c3a424b9bdcce7d427a10f11afed62c5cc9fb
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Wed Jun 8 10:58:06 2016 +0300

    release to yakkety

diff --git a/debian/changelog b/debian/changelog
index dcdc675..aacd389 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,10 @@
-libinput (1.3.1-1ubuntu1) UNRELEASED; urgency=medium
+libinput (1.3.1-1ubuntu1) yakkety; urgency=medium
 
-  * Merge from debian.
+  * Merge from debian. (LP: #1587396, #1571291)
   * Refresh patches, drop touchpad-add-a-middle-button-software-area.diff
     which is upstream.
 
- -- Timo Aaltonen <tjaalton@debian.org>  Wed, 08 Jun 2016 08:39:45 +0300
+ -- Timo Aaltonen <tjaalton@debian.org>  Wed, 08 Jun 2016 10:57:48 +0300
 
 libinput (1.3.1-1) unstable; urgency=medium
 

commit 98574efedddfc9511e71930394194443c73a709b
Author: Timo Aaltonen <tjaalton@debian.org>
Date:   Wed Jun 8 10:57:46 2016 +0300

    merge, update/drop patches

diff --git a/debian/changelog b/debian/changelog
index 5441be6..dcdc675 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+libinput (1.3.1-1ubuntu1) UNRELEASED; urgency=medium
+
+  * Merge from debian.
+  * Refresh patches, drop touchpad-add-a-middle-button-software-area.diff
+    which is upstream.
+
+ -- Timo Aaltonen <tjaalton@debian.org>  Wed, 08 Jun 2016 08:39:45 +0300
+
 libinput (1.3.1-1) unstable; urgency=medium
 
   * New upstream release.
diff --git a/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch b/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch
index 0473fdf..d3254c4 100644
--- a/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch
+++ b/debian/patches/fix-premature-flushing-of-evdev-event-on-mx4.patch
@@ -17,7 +17,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
 
 --- a/src/evdev.c
 +++ b/src/evdev.c
-@@ -665,16 +665,16 @@ evdev_process_key(struct evdev_device *d
+@@ -714,16 +714,16 @@ evdev_process_key(struct evdev_device *d
  	if (e->value == 2)
  		return;
  
@@ -40,7 +40,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	if (e->value == 0) {
 --- a/test/touch.c
 +++ b/test/touch.c
-@@ -912,6 +912,114 @@ START_TEST(touch_point_no_minor_or_orien
+@@ -958,6 +958,114 @@ START_TEST(touch_point_no_minor_or_orien
  }
  END_TEST
  
@@ -155,10 +155,10 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  void
  litest_setup_tests(void)
  {
-@@ -942,4 +1050,6 @@ litest_setup_tests(void)
- 	litest_add_ranged("touch:state", touch_initial_state, LITEST_TOUCH, LITEST_PROTOCOL_A, &axes);
- 
+@@ -990,4 +1098,6 @@ litest_setup_tests(void)
  	litest_add("touch:time", touch_time_usec, LITEST_TOUCH, LITEST_TOUCHPAD);
+ 
+ 	litest_add_for_device("touch:fuzz", touch_fuzz, LITEST_MULTITOUCH_FUZZ_SCREEN);
 +
 +	litest_add_no_device("touch:special events", touchscreen_with_btn_tool_finger_on_down);
  }
diff --git a/debian/patches/series b/debian/patches/series
index 1b21a7f..63b23e6 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
 touch-point-orientation-size.patch
 fix-premature-flushing-of-evdev-event-on-mx4.patch
-touchpad-add-a-middle-button-software-area.diff
diff --git a/debian/patches/touch-point-orientation-size.patch b/debian/patches/touch-point-orientation-size.patch
index 298a460..2c40b72 100644
--- a/debian/patches/touch-point-orientation-size.patch
+++ b/debian/patches/touch-point-orientation-size.patch
@@ -42,10 +42,10 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	$(srcdir)/test-suite.dox \
  	$(srcdir)/tools.dox \
 +	$(srcdir)/touch-event-properties.dox \
+ 	$(srcdir)/touchpad-jumping-cursors.dox \
  	$(srcdir)/touchpads.dox
  
- diagram_files = \
-@@ -51,6 +52,7 @@ diagram_files = \
+@@ -60,6 +61,7 @@ diagram_files = \
  	$(srcdir)/svg/thumb-detection.svg \
  	$(srcdir)/svg/top-software-buttons.svg \
  	$(srcdir)/svg/touchscreen-gestures.svg \
@@ -55,7 +55,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  style_files = \
 --- a/doc/page-hierarchy.dox
 +++ b/doc/page-hierarchy.dox
-@@ -11,6 +11,7 @@
+@@ -12,6 +12,7 @@
  @page touchscreens Touchscreens
  
  - @subpage absolute_axes
@@ -460,7 +460,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
 +*/
 --- a/src/evdev.c
 +++ b/src/evdev.c
-@@ -45,6 +45,10 @@
+@@ -49,6 +49,10 @@
  
  #define DEFAULT_WHEEL_CLICK_ANGLE 15
  #define DEFAULT_MIDDLE_BUTTON_SCROLL_TIMEOUT ms2us(200)
@@ -471,7 +471,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  
  enum evdev_key_type {
  	EVDEV_KEY_TYPE_NONE,
-@@ -258,6 +262,100 @@ evdev_device_transform_y(struct evdev_de
+@@ -318,6 +322,100 @@ evdev_device_transform_y(struct evdev_de
  	return scale_axis(device->abs.absinfo_y, y, height);
  }
  
@@ -572,91 +572,37 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  static inline void
  normalize_delta(struct evdev_device *device,
  		const struct device_coords *delta,
-@@ -295,8 +393,15 @@ evdev_flush_pending_event(struct evdev_d
- 	struct normalized_coords accel, unaccel;
+@@ -382,6 +480,11 @@ evdev_flush_pending_event(struct evdev_d
  	struct device_coords point;
  	struct device_float_coords raw;
-+	struct mt_slot *slot_data;
+ 	struct mt_slot *slot = NULL;
 +	struct ellipse default_touch = {
 +		.major = DEFAULT_TOUCH_MAJOR,
 +		.minor = DEFAULT_TOUCH_MINOR,
 +		.orientation = DEFAULT_TOUCH_ORIENTATION
 +	};
  
- 	slot = device->mt.slot;
-+	slot_data = &device->mt.slots[slot];
- 
- 	switch (device->pending_event) {
- 	case EVDEV_NONE:
-@@ -337,7 +442,7 @@ evdev_flush_pending_event(struct evdev_d
- 		if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
- 			break;
- 
--		if (device->mt.slots[slot].seat_slot != -1) {
-+		if (slot_data->seat_slot != -1) {
- 			log_bug_kernel(libinput,
- 				       "%s: Driver sent multiple touch down for the "
- 				       "same slot",
-@@ -346,38 +451,48 @@ evdev_flush_pending_event(struct evdev_d
- 		}
- 
- 		seat_slot = ffs(~seat->slot_map) - 1;
--		device->mt.slots[slot].seat_slot = seat_slot;
-+		slot_data->seat_slot = seat_slot;
- 
- 		if (seat_slot == -1)
- 			break;
- 
- 		seat->slot_map |= 1 << seat_slot;
--		point = device->mt.slots[slot].point;
-+		point = slot_data->point;
+ 	slot_idx = device->mt.slot;
+ 	if (device->mt.slots)
+@@ -446,7 +549,7 @@ evdev_flush_pending_event(struct evdev_d
  		evdev_transform_absolute(device, &point);
  
--		touch_notify_touch_down(base, time, slot, seat_slot,
+ 		touch_notify_touch_down(base, time, slot_idx, seat_slot,
 -					&point);
-+		touch_notify_touch_down(base,
-+					time,
-+					slot,
-+					seat_slot,
-+					&point,
-+					&slot_data->area,
-+					slot_data->pressure);
++					&point, &slot->area, slot->pressure);
  		break;
  	case EVDEV_ABSOLUTE_MT_MOTION:
  		if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
- 			break;
- 
--		seat_slot = device->mt.slots[slot].seat_slot;
--		point = device->mt.slots[slot].point;
-+		seat_slot = slot_data->seat_slot;
-+		point = slot_data->point;
- 
- 		if (seat_slot == -1)
- 			break;
+@@ -463,7 +566,7 @@ evdev_flush_pending_event(struct evdev_d
  
  		evdev_transform_absolute(device, &point);
--		touch_notify_touch_motion(base, time, slot, seat_slot,
+ 		touch_notify_touch_motion(base, time, slot_idx, seat_slot,
 -					  &point);
-+		touch_notify_touch_motion(base,
-+					  time,
-+					  slot,
-+					  seat_slot,
-+					  &point,
-+					  &slot_data->area,
-+					  slot_data->pressure);
++					  &point, &slot->area, slot->pressure);
  		break;
  	case EVDEV_ABSOLUTE_MT_UP:
  		if (!(device->seat_caps & EVDEV_DEVICE_TOUCH))
- 			break;
- 
--		seat_slot = device->mt.slots[slot].seat_slot;
--		device->mt.slots[slot].seat_slot = -1;
-+		seat_slot = slot_data->seat_slot;
-+		slot_data->seat_slot = -1;
- 
- 		if (seat_slot == -1)
- 			break;
-@@ -409,7 +524,13 @@ evdev_flush_pending_event(struct evdev_d
+@@ -502,7 +605,13 @@ evdev_flush_pending_event(struct evdev_d
  		point = device->abs.point;
  		evdev_transform_absolute(device, &point);
  
@@ -671,7 +617,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		break;
  	case EVDEV_ABSOLUTE_MOTION:
  		point = device->abs.point;
-@@ -421,8 +542,13 @@ evdev_flush_pending_event(struct evdev_d
+@@ -514,8 +623,13 @@ evdev_flush_pending_event(struct evdev_d
  			if (seat_slot == -1)
  				break;
  
@@ -687,7 +633,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		} else if (device->seat_caps & EVDEV_DEVICE_POINTER) {
  			pointer_notify_motion_absolute(base, time, &point);
  		}
-@@ -596,8 +722,9 @@ evdev_process_touch(struct evdev_device
+@@ -652,8 +766,9 @@ evdev_process_touch(struct evdev_device
  		    struct input_event *e,
  		    uint64_t time)
  {
@@ -699,7 +645,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		if ((size_t)e->value >= device->mt.slots_len) {
  			log_bug_libinput(device->base.seat->libinput,
  					 "%s exceeds slots (%d of %zd)\n",
-@@ -608,8 +735,7 @@ evdev_process_touch(struct evdev_device
+@@ -664,8 +779,7 @@ evdev_process_touch(struct evdev_device
  		}
  		evdev_flush_pending_event(device, time);
  		device->mt.slot = e->value;
@@ -709,7 +655,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		if (device->pending_event != EVDEV_NONE &&
  		    device->pending_event != EVDEV_ABSOLUTE_MT_MOTION)
  			evdev_flush_pending_event(device, time);
-@@ -617,17 +743,34 @@ evdev_process_touch(struct evdev_device
+@@ -673,17 +787,34 @@ evdev_process_touch(struct evdev_device
  			device->pending_event = EVDEV_ABSOLUTE_MT_DOWN;
  		else
  			device->pending_event = EVDEV_ABSOLUTE_MT_UP;
@@ -754,7 +700,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	}
  }
  
-@@ -1989,6 +2132,20 @@ evdev_configure_mt_device(struct evdev_d
+@@ -2051,6 +2182,20 @@ evdev_configure_mt_device(struct evdev_d
  		slots[slot].point.y = libevdev_get_slot_value(evdev,
  							      slot,
  							      ABS_MT_POSITION_Y);
@@ -775,7 +721,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	}
  	device->mt.slots = slots;
  	device->mt.slots_len = num_slots;
-@@ -2060,6 +2217,15 @@ evdev_configure_device(struct evdev_devi
+@@ -2120,6 +2265,15 @@ evdev_configure_device(struct evdev_devi
  		return -1;
  	}
  
@@ -793,16 +739,16 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  
 --- a/src/evdev.h
 +++ b/src/evdev.h
-@@ -119,6 +119,8 @@ enum evdev_device_model {
- struct mt_slot {
+@@ -122,6 +122,8 @@ struct mt_slot {
  	int32_t seat_slot;
  	struct device_coords point;
+ 	struct device_coords hysteresis_center;
 +	struct ellipse area;
 +	int32_t pressure;
  };
  
  struct evdev_device {
-@@ -135,6 +137,8 @@ struct evdev_device {
+@@ -138,6 +140,8 @@ struct evdev_device {
  	int fd;
  	struct {
  		const struct input_absinfo *absinfo_x, *absinfo_y;
@@ -811,7 +757,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  		int fake_resolution;
  
  		struct device_coords point;
-@@ -376,6 +380,26 @@ double
+@@ -394,6 +398,26 @@ double
  evdev_device_transform_y(struct evdev_device *device,
  			 double y,
  			 uint32_t height);
@@ -840,7 +786,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  
 --- a/src/libinput-private.h
 +++ b/src/libinput-private.h
-@@ -40,6 +40,11 @@ struct device_coords {
+@@ -48,6 +48,11 @@ struct device_coords {
  	int x, y;
  };
  
@@ -852,7 +798,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  /*
   * A coordinate pair in device coordinates, capable of holding non discrete
   * values, this is necessary e.g. when device coordinates get averaged.
-@@ -461,14 +466,18 @@ touch_notify_touch_down(struct libinput_
+@@ -469,14 +474,18 @@ touch_notify_touch_down(struct libinput_
  			uint64_t time,
  			int32_t slot,
  			int32_t seat_slot,
@@ -875,7 +821,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  touch_notify_touch_up(struct libinput_device *device,
 --- a/src/libinput-util.h
 +++ b/src/libinput-util.h
-@@ -145,6 +145,12 @@ msleep(unsigned int ms)
+@@ -146,6 +146,12 @@ msleep(unsigned int ms)
  	usleep(ms * 1000);
  }
  
@@ -899,7 +845,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  };
  
  struct libinput_event_gesture {
-@@ -758,6 +760,204 @@ libinput_event_touch_get_y(struct libinp
+@@ -788,6 +790,204 @@ libinput_event_touch_get_y(struct libinp
  	return evdev_convert_to_mm(device->abs.absinfo_y, event->point.y);
  }
  
@@ -1104,7 +1050,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  LIBINPUT_EXPORT uint32_t
  libinput_event_gesture_get_time(struct libinput_event_gesture *event)
  {
-@@ -2113,7 +2313,9 @@ touch_notify_touch_down(struct libinput_
+@@ -2146,7 +2346,9 @@ touch_notify_touch_down(struct libinput_
  			uint64_t time,
  			int32_t slot,
  			int32_t seat_slot,
@@ -1115,7 +1061,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  {
  	struct libinput_event_touch *touch_event;
  
-@@ -2129,6 +2331,8 @@ touch_notify_touch_down(struct libinput_
+@@ -2162,6 +2364,8 @@ touch_notify_touch_down(struct libinput_
  		.slot = slot,
  		.seat_slot = seat_slot,
  		.point = *point,
@@ -1124,7 +1070,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	};
  
  	post_device_event(device, time,
-@@ -2141,7 +2345,9 @@ touch_notify_touch_motion(struct libinpu
+@@ -2174,7 +2378,9 @@ touch_notify_touch_motion(struct libinpu
  			  uint64_t time,
  			  int32_t slot,
  			  int32_t seat_slot,
@@ -1135,7 +1081,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  {
  	struct libinput_event_touch *touch_event;
  
-@@ -2157,6 +2363,8 @@ touch_notify_touch_motion(struct libinpu
+@@ -2190,6 +2396,8 @@ touch_notify_touch_motion(struct libinpu
  		.slot = slot,
  		.seat_slot = seat_slot,
  		.point = *point,
@@ -1146,7 +1092,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	post_device_event(device, time,
 --- a/src/libinput.h
 +++ b/src/libinput.h
-@@ -1151,6 +1151,228 @@ libinput_event_touch_get_y_transformed(s
+@@ -1233,6 +1233,228 @@ libinput_event_touch_get_y_transformed(s
  /**
   * @ingroup event_touch
   *
@@ -1399,7 +1345,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  	libinput_device_config_accel_get_profiles;
 --- a/test/touch.c
 +++ b/test/touch.c
-@@ -673,6 +673,245 @@ START_TEST(touch_time_usec)
+@@ -719,6 +719,245 @@ START_TEST(touch_fuzz)
  }
  END_TEST
  
@@ -1645,7 +1591,7 @@ Signed-off-by: Andreas Pokorny <andreas.pokorny@canonical.com>
  void
  litest_setup_tests(void)
  {
-@@ -697,6 +936,8 @@ litest_setup_tests(void)
+@@ -743,6 +982,8 @@ litest_setup_tests(void)
  	litest_add("touch:protocol a", touch_protocol_a_init, LITEST_PROTOCOL_A, LITEST_ANY);
  	litest_add("touch:protocol a", touch_protocol_a_touch, LITEST_PROTOCOL_A, LITEST_ANY);
  	litest_add("touch:protocol a", touch_protocol_a_2fg_touch, LITEST_PROTOCOL_A, LITEST_ANY);
diff --git a/debian/patches/touchpad-add-a-middle-button-software-area.diff b/debian/patches/touchpad-add-a-middle-button-software-area.diff
deleted file mode 100644
index 441148a..0000000
--- a/debian/patches/touchpad-add-a-middle-button-software-area.diff
+++ /dev/null
@@ -1,302 +0,0 @@
-commit 886b5a2cd8c785e48ddf5ceb4a902cd1f518d2a9
-Author: Peter Hutterer <peter.hutterer@who-t.net>
-Date:   Mon Apr 4 10:06:36 2016 +1000
-
-    touchpad: add a middle button software area
-    
-    Middle button interaction is most commonly to paste and it is a single-event
-    interaction (button press). We provided middle button in software button mode
-    by emulating it with a two-finger press with L+R down at the same time. This
-    is also what many touchpads are spectacularly bad at, it is very common to
-    detect the physical button down event before the second finger registers,
-    resulting in left or right clicks where a middle button should be triggered.
-    
-    Unless the fingers are resting on the touchpad for at least one scanout, the
-    success rate for middle button emulation is only at 70% or so.
-    
-    This patch adds a 25%-width middle button area between the left and the right
-    software button, everything else stays the same. To avoid immediate breakage,
-    the middle button emulation remains but may be removed in the future.
-    The doc is updated to only refer to the middle button area now.
-    
-    https://bugs.freedesktop.org/show_bug.cgi?id=94755
-    
-    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
-
-diff --git a/doc/clickpad-softbuttons.dox b/doc/clickpad-softbuttons.dox
-index a4f2e44..cf4c8c9 100644
---- a/doc/clickpad-softbuttons.dox
-+++ b/doc/clickpad-softbuttons.dox
-@@ -20,16 +20,20 @@ generated by libinput and passed to the caller in response to a click.
- @section software_buttons Software button areas
- 
- On most clickpads, this is the default behavior. The bottom of the touchpad
--is split in the middle to generate left or right button events on click. The
--height of the button area depends on the hardware but is usually around
--10mm.
-+is split into three distinct areas generate left, middle or right button
-+events on click. The height of the button area depends on the hardware but
-+is usually around 10mm.
- 
- Left, right and middle button events can be triggered as follows:
- - if a finger is in the main area or the left button area, a click generates
-   left button events.
- - if a finger is in the right area, a click generates right button events.
--- if there is a finger in both the left and right button area, a click
--  generates middle button events.
-+- if a finger is in the middle area, a click generates middle button events.
-+
-+The middle button is always centered on the touchpad and smaller in size
-+than the left or right button. The actual size is device-dependent though as
-+many touchpads do not have visible markings for the middle button the exact
-+location of the button is not visibly obvious.
- 
- @image html software-buttons.svg "Left, right and middle-button click with software button areas"
- 
-diff --git a/doc/svg/software-buttons.svg b/doc/svg/software-buttons.svg
-index 903535c..c0bc610 100644
---- a/doc/svg/software-buttons.svg
-+++ b/doc/svg/software-buttons.svg
-@@ -41,8 +41,8 @@
-      id="namedview4312"
-      showgrid="false"
-      inkscape:zoom="0.57798581"
--     inkscape:cx="1134.9723"
--     inkscape:cy="-71.183873"
-+     inkscape:cx="842.57758"
-+     inkscape:cy="-74.644166"
-      inkscape:window-x="0"
-      inkscape:window-y="27"
-      inkscape:window-maximized="1"
-@@ -106,7 +106,7 @@
-      id="rect2858-7"
-      style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:5.19376326;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate" />
-   <g
--     transform="matrix(0.79657897,0.11742288,-0.14814182,0.631399,665.11943,-345.64117)"
-+     transform="matrix(0.79657897,0.11742288,-0.14814182,0.631399,749.8966,-336.99044)"
-      id="g3663-9-8">
-     <path
-        d="m 388.57143,893.79076 -57.14285,-130 c 0,0 -30.0247,-58.84827 4.28571,-70.00001 27.07438,-8.79984 37.32196,9.59496 40,14.64286 27.54455,51.91936 84.64285,173.21429 84.64285,173.21429 l -0.71428,0 -71.07143,12.14286 z"
-@@ -125,30 +125,6 @@
-        inkscape:connector-curvature="0" />
-   </g>
-   <g
--     id="g4656"
--     transform="translate(-0.31997204,0.28487182)">
--    <g
--       id="g4639">
--      <path
--         inkscape:connector-curvature="0"
--         style="fill:none;stroke:#000000;stroke-width:0.72135597px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
--         id="path2820-0-5"
--         d="m 970.15914,263.93369 32.58666,-97.47985 c 0,0 12.2603,-46.32869 38.5506,-33.925 20.7457,9.78778 17.4301,24.72594 16.4399,28.75425 -10.1846,41.43257 -30.105,105.84033 -30.105,105.84033 l -0.428,-0.37827 z"
--         sodipodi:nodetypes="ccssccc" />
--      <path
--         inkscape:connector-curvature="0"
--         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffccaa;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.00144271;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker:none;enable-background:accumulate"
--         id="path2824-9-3"
--         d="m 987.16367,214.84092 c 8.97014,-26.84686 16.75933,-50.19953 17.30923,-51.89481 3.8651,-11.91483 10.3862,-22.76212 16.5622,-27.54951 6.8496,-5.30946 13.8243,-5.75615 21.9108,-1.40323 3.7999,2.04543 6.0302,3.61208 8.2265,5.77836 2.5214,2.487 3.6881,4.17002 5.1008,7.35828 1.3655,3.08181 1.9391,7.11725 1.5051,10.58923 -0.597,4.77663 -10.2821,40.41668 -20.9931,77.25236 -7.7256,26.56907 -9.371,31.11182 -9.5644,31.10964 -0.1479,-0.002 -55.70067,-1.83937 -56.08626,-2.18017 -0.16723,-0.1478 6.29681,-19.93218 16.02913,-49.06015 z"
--         sodipodi:nodetypes="scsssscsccs" />
--      <path
--         inkscape:connector-curvature="0"
--         style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.92000002;fill:#ffe6d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.2;marker:none;enable-background:accumulate"
--         id="path2824-7-8-8"
--         d="m 1008.3595,164.57667 c 3.8651,-11.91483 7.6606,-19.35039 13.8366,-24.13778 6.8495,-5.30946 12.0833,-5.57765 20.1698,-1.22474 9.3061,4.73331 12.9905,9.62271 11.9094,19.03362 -6.3459,19.3209 -6.9054,22.12042 -9.2168,26.32727 -0.1479,-0.002 -33.6651,-14.70742 -35.0296,-15.23839 -1.4035,-0.54616 -1.8884,-3.70289 -1.6694,-4.75998 z" />
--    </g>
--  </g>
--  <g
-      transform="translate(-386.56163,2.2570367)"
-      id="g4656-3">
-     <g
-diff --git a/src/evdev-mt-touchpad-buttons.c b/src/evdev-mt-touchpad-buttons.c
-index 076eab0..a9b7521 100644
---- a/src/evdev-mt-touchpad-buttons.c
-+++ b/src/evdev-mt-touchpad-buttons.c
-@@ -64,6 +64,7 @@ static inline const char*
- button_event_to_str(enum button_event event) {
- 	switch(event) {
- 	CASE_RETURN_STRING(BUTTON_EVENT_IN_BOTTOM_R);
-+	CASE_RETURN_STRING(BUTTON_EVENT_IN_BOTTOM_M);
- 	CASE_RETURN_STRING(BUTTON_EVENT_IN_BOTTOM_L);
- 	CASE_RETURN_STRING(BUTTON_EVENT_IN_TOP_R);
- 	CASE_RETURN_STRING(BUTTON_EVENT_IN_TOP_M);
-@@ -93,10 +94,20 @@ is_inside_bottom_right_area(const struct tp_dispatch *tp,
- }
- 
- static inline bool
-+is_inside_bottom_middle_area(const struct tp_dispatch *tp,
-+			   const struct tp_touch *t)
-+{
-+	return is_inside_bottom_button_area(tp, t) &&
-+	       !is_inside_bottom_right_area(tp, t) &&
-+	       t->point.x > tp->buttons.bottom_area.middlebutton_left_edge;
-+}
-+
-+static inline bool
- is_inside_bottom_left_area(const struct tp_dispatch *tp,
- 			   const struct tp_touch *t)
- {
- 	return is_inside_bottom_button_area(tp, t) &&
-+	       !is_inside_bottom_middle_area(tp, t) &&
- 	       !is_inside_bottom_right_area(tp, t);
- }
- 
-@@ -192,6 +203,7 @@ tp_button_none_handle_event(struct tp_dispatch *tp,
- {
- 	switch (event) {
- 	case BUTTON_EVENT_IN_BOTTOM_R:
-+	case BUTTON_EVENT_IN_BOTTOM_M:
- 	case BUTTON_EVENT_IN_BOTTOM_L:
- 		tp_button_set_state(tp, t, BUTTON_STATE_BOTTOM, event);
- 		break;
-@@ -220,6 +232,7 @@ tp_button_area_handle_event(struct tp_dispatch *tp,
- {
- 	switch (event) {
- 	case BUTTON_EVENT_IN_BOTTOM_R:
-+	case BUTTON_EVENT_IN_BOTTOM_M:
- 	case BUTTON_EVENT_IN_BOTTOM_L:
- 	case BUTTON_EVENT_IN_TOP_R:
- 	case BUTTON_EVENT_IN_TOP_M:
-@@ -243,6 +256,7 @@ tp_button_bottom_handle_event(struct tp_dispatch *tp,
- {
- 	switch (event) {
- 	case BUTTON_EVENT_IN_BOTTOM_R:
-+	case BUTTON_EVENT_IN_BOTTOM_M:
- 	case BUTTON_EVENT_IN_BOTTOM_L:
- 		if (event != t->button.curr)
- 			tp_button_set_state(tp,
-@@ -273,6 +287,7 @@ tp_button_top_handle_event(struct tp_dispatch *tp,
- {
- 	switch (event) {
- 	case BUTTON_EVENT_IN_BOTTOM_R:
-+	case BUTTON_EVENT_IN_BOTTOM_M:
- 	case BUTTON_EVENT_IN_BOTTOM_L:
- 		tp_button_set_state(tp, t, BUTTON_STATE_TOP_TO_IGNORE, event);
- 		break;
-@@ -305,6 +320,7 @@ tp_button_top_new_handle_event(struct tp_dispatch *tp,
- {
- 	switch(event) {
- 	case BUTTON_EVENT_IN_BOTTOM_R:
-+	case BUTTON_EVENT_IN_BOTTOM_M:
- 	case BUTTON_EVENT_IN_BOTTOM_L:
- 		tp_button_set_state(tp, t, BUTTON_STATE_AREA, event);
- 		break;
-@@ -355,6 +371,7 @@ tp_button_top_to_ignore_handle_event(struct tp_dispatch *tp,
- 					    event);
- 		break;
- 	case BUTTON_EVENT_IN_BOTTOM_R:
-+	case BUTTON_EVENT_IN_BOTTOM_M:
- 	case BUTTON_EVENT_IN_BOTTOM_L:
- 	case BUTTON_EVENT_IN_AREA:
- 		break;
-@@ -377,6 +394,7 @@ tp_button_ignore_handle_event(struct tp_dispatch *tp,
- {
- 	switch (event) {
- 	case BUTTON_EVENT_IN_BOTTOM_R:
-+	case BUTTON_EVENT_IN_BOTTOM_M:
- 	case BUTTON_EVENT_IN_BOTTOM_L:
- 	case BUTTON_EVENT_IN_TOP_R:
- 	case BUTTON_EVENT_IN_TOP_M:
-@@ -450,6 +468,8 @@ tp_button_handle_state(struct tp_dispatch *tp, uint64_t time)
- 
- 			if (is_inside_bottom_right_area(tp, t))
- 				event = BUTTON_EVENT_IN_BOTTOM_R;
-+			else if (is_inside_bottom_middle_area(tp, t))
-+				event = BUTTON_EVENT_IN_BOTTOM_M;
- 			else if (is_inside_bottom_left_area(tp, t))
- 				event = BUTTON_EVENT_IN_BOTTOM_L;
- 			else if (is_inside_top_right_area(tp, t))
-@@ -543,7 +563,14 @@ tp_init_softbuttons(struct tp_dispatch *tp,
- 	} else {
- 		tp->buttons.bottom_area.top_edge = height * .85 + yoffset;
- 	}
--	tp->buttons.bottom_area.rightbutton_left_edge = width/2 + xoffset;
-+
-+	/* The middle button is 25% of the touchpad and centered. Many
-+	 * touchpads don't have markings for the middle button at all so we
-+	 * need to make it big enough to reliably hit it but not too big so
-+	 * it takes away all the space.
-+	 */
-+	tp->buttons.bottom_area.middlebutton_left_edge = width * 0.375 + xoffset;
-+	tp->buttons.bottom_area.rightbutton_left_edge = width * 0.625 + xoffset;
- }
- 
- void
-@@ -989,6 +1016,8 @@ tp_post_clickpadbutton_buttons(struct tp_dispatch *tp, uint64_t time)
- 				break;
- 			case BUTTON_EVENT_IN_TOP_M:
- 				is_top = 1;
-+				/* fallthrough */
-+			case BUTTON_EVENT_IN_BOTTOM_M:
- 				area |= MIDDLE;
- 				break;
- 			case BUTTON_EVENT_IN_TOP_R:
-diff --git a/src/evdev-mt-touchpad.h b/src/evdev-mt-touchpad.h
-index 1f05a03..7277726 100644
---- a/src/evdev-mt-touchpad.h
-+++ b/src/evdev-mt-touchpad.h
-@@ -70,6 +70,7 @@ enum touch_palm_state {
- 
- enum button_event {
- 	BUTTON_EVENT_IN_BOTTOM_R = 30,
-+	BUTTON_EVENT_IN_BOTTOM_M,
- 	BUTTON_EVENT_IN_BOTTOM_L,
- 	BUTTON_EVENT_IN_TOP_R,
- 	BUTTON_EVENT_IN_TOP_M,
-@@ -283,6 +284,7 @@ struct tp_dispatch {
- 		struct {
- 			int32_t top_edge;	/* in device coordinates */
- 			int32_t rightbutton_left_edge; /* in device coordinates */
-+			int32_t middlebutton_left_edge; /* in device coordinates */
- 		} bottom_area;
- 
- 		struct {
-diff --git a/test/touchpad-buttons.c b/test/touchpad-buttons.c
-index 064c29e..080c670 100644
---- a/test/touchpad-buttons.c
-+++ b/test/touchpad-buttons.c
-@@ -987,6 +987,35 @@ START_TEST(clickpad_softbutton_left)
- }
- END_TEST
- 
-+START_TEST(clickpad_softbutton_middle)
-+{
-+	struct litest_device *dev = litest_current_device();
-+	struct libinput *li = dev->libinput;
-+
-+	litest_drain_events(li);
-+
-+	litest_touch_down(dev, 0, 50, 90);
-+	litest_event(dev, EV_KEY, BTN_LEFT, 1);
-+	litest_event(dev, EV_SYN, SYN_REPORT, 0);
-+
-+	litest_assert_button_event(li,
-+				   BTN_MIDDLE,
-+				   LIBINPUT_BUTTON_STATE_PRESSED);
-+
-+	litest_event(dev, EV_KEY, BTN_LEFT, 0);
-+	litest_event(dev, EV_SYN, SYN_REPORT, 0);
-+	litest_touch_up(dev, 0);
-+
-+	litest_assert_button_event(li,
-+				   BTN_MIDDLE,
-+				   LIBINPUT_BUTTON_STATE_RELEASED);
-+
-+	libinput_dispatch(li);
-+
-+	litest_assert_empty_queue(li);
-+}
-+END_TEST
-+
- START_TEST(clickpad_softbutton_right)
- {
- 	struct litest_device *dev = litest_current_device();
-@@ -1585,6 +1614,7 @@ litest_setup_tests(void)
- 	litest_add("touchpad:click", clickpad_finger_pin, LITEST_CLICKPAD, LITEST_ANY);
- 
- 	litest_add("touchpad:softbutton", clickpad_softbutton_left, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
-+	litest_add("touchpad:softbutton", clickpad_softbutton_middle, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
- 	litest_add("touchpad:softbutton", clickpad_softbutton_right, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
- 	litest_add("touchpad:softbutton", clickpad_softbutton_left_tap_n_drag, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);
- 	litest_add("touchpad:softbutton", clickpad_softbutton_right_tap_n_drag, LITEST_CLICKPAD, LITEST_APPLE_CLICKPAD);

commit 75a1d5d9e04280e4a90a4241e3c7128ca070c70c
Author: Héctor Orón Martínez <zumbi@debian.org>
Date:   Mon May 30 13:13:20 2016 +0200

    Release Debian version libinput-1.3.1-1
    
    Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>

diff --git a/debian/changelog b/debian/changelog
index c9f7659..6b2495c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+libinput (1.3.1-1) unstable; urgency=medium
+
+  * New upstream release.
+    - Fixes 'libinput is very choppy with ELAN1000 touchpads'
+    (Closes: #825784)
+
+ -- Héctor Orón Martínez <zumbi@debian.org>  Mon, 30 May 2016 12:29:50 +0200
+
 libinput (1.3.0-2) unstable; urgency=medium
 
   * rules: Use --fail-missing for dh_install.

commit a5fdfd7672629b22767768afca4fbe27abb81583
Author: Héctor Orón Martínez <zumbi@debian.org>
Date:   Mon May 30 13:12:58 2016 +0200

    d/control: update uploader name for myself
    
    Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>

diff --git a/debian/control b/debian/control
index 8f92ee9..0acae76 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: libinput
 Section: libs
 Priority: optional
 Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
-Uploaders: Emilio Pozuelo Monfort <pochu@debian.org>, Hector Oron <zumbi@debian.org>
+Uploaders: Emilio Pozuelo Monfort <pochu@debian.org>, Héctor Orón Martínez <zumbi@debian.org>
 Build-Depends:
  debhelper (>= 9),
  dh-autoreconf,

commit 568be0867f7ac8c37912ad6724a053f40f6aae51
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon May 30 08:51:11 2016 +1000

    configure.ac: libinput 1.3.1
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index a44d84c..3cf46d4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ AC_PREREQ([2.64])
 
 m4_define([libinput_major_version], [1])
 m4_define([libinput_minor_version], [3])
-m4_define([libinput_micro_version], [0])
+m4_define([libinput_micro_version], [1])
 m4_define([libinput_version],
           [libinput_major_version.libinput_minor_version.libinput_micro_version])
 
@@ -35,7 +35,7 @@ AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
 # b) If interfaces have been changed or added, but binary compatibility has
 #    been preserved, change to C+1:0:A+1
 # c) If the interface is the same as the previous version, change to C:R+1:A
-LIBINPUT_LT_VERSION=18:3:8
+LIBINPUT_LT_VERSION=18:4:8
 AC_SUBST(LIBINPUT_LT_VERSION)
 
 AM_SILENT_RULES([yes])

commit 0d5d367a82d250d3cdf4b1e21c48bf1cf81b8d7a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri May 27 10:35:34 2016 +1000

    doc: add the missing svg files to the Makefile.am
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 8d80aae784dececda72ff6c9409b4d421a887f20)

diff --git a/doc/Makefile.am b/doc/Makefile.am
index 58effde..62630d0 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -39,15 +39,23 @@ diagram_files = \
 	$(srcdir)/dot/evemu.gv \
 	$(srcdir)/svg/button-scrolling.svg \
 	$(srcdir)/svg/clickfinger.svg \
+	$(srcdir)/svg/clickfinger-distance.svg \
 	$(srcdir)/svg/edge-scrolling.svg \
+	$(srcdir)/svg/gesture-2fg-ambiguity.svg \
 	$(srcdir)/svg/palm-detection.svg \
 	$(srcdir)/svg/pinch-gestures.svg \
+	$(srcdir)/svg/pinch-gestures-softbuttons.svg \
 	$(srcdir)/svg/ptraccel-linear.svg \
 	$(srcdir)/svg/ptraccel-low-dpi.svg \
 	$(srcdir)/svg/ptraccel-touchpad.svg \
 	$(srcdir)/svg/ptraccel-trackpoint.svg \
 	$(srcdir)/svg/software-buttons.svg \
 	$(srcdir)/svg/swipe-gestures.svg \
+	$(srcdir)/svg/tablet-axes.svg \
+	$(srcdir)/svg/tablet-interfaces.svg \
+	$(srcdir)/svg/tablet-left-handed.svg \
+	$(srcdir)/svg/tablet-out-of-bounds.svg \
+	$(srcdir)/svg/tablet.svg \
 	$(srcdir)/svg/tap-n-drag.svg \
 	$(srcdir)/svg/thumb-detection.svg \
 	$(srcdir)/svg/top-software-buttons.svg \

commit 0694e46ccf0a6337441d5e02fb5049f12d97c8cf
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri May 27 10:33:24 2016 +1000

    doc: sort the svg files alphabetically
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 7f9c1f1c6c624252fa50693b05f595304aa26764)

diff --git a/doc/Makefile.am b/doc/Makefile.am
index f56ed6a..58effde 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -37,9 +37,8 @@ diagram_files = \
 	$(srcdir)/dot/libinput-stack-xorg.gv \
 	$(srcdir)/dot/libinput-stack-gnome.gv \
 	$(srcdir)/dot/evemu.gv \
-	$(srcdir)/svg/software-buttons.svg \
-	$(srcdir)/svg/clickfinger.svg \
 	$(srcdir)/svg/button-scrolling.svg \
+	$(srcdir)/svg/clickfinger.svg \
 	$(srcdir)/svg/edge-scrolling.svg \
 	$(srcdir)/svg/palm-detection.svg \
 	$(srcdir)/svg/pinch-gestures.svg \
@@ -47,6 +46,7 @@ diagram_files = \
 	$(srcdir)/svg/ptraccel-low-dpi.svg \
 	$(srcdir)/svg/ptraccel-touchpad.svg \
 	$(srcdir)/svg/ptraccel-trackpoint.svg \
+	$(srcdir)/svg/software-buttons.svg \
 	$(srcdir)/svg/swipe-gestures.svg \
 	$(srcdir)/svg/tap-n-drag.svg \
 	$(srcdir)/svg/thumb-detection.svg \

commit 97ff0002e9b9276819e1caaad204711948bde2bb
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu May 26 08:40:17 2016 +1000

    pad: ignore EV_MSC events
    
    The Wacom Express Key Remote sends the serial number via EV_MSC. At some later
    point we'll need the serial to match the LEDs correctly but for now we can
    ignore them.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 0933650f664560f81145c780ea982f49d4df1924)

diff --git a/src/evdev-tablet-pad.c b/src/evdev-tablet-pad.c
index ad6ead8..5341657 100644
--- a/src/evdev-tablet-pad.c
+++ b/src/evdev-tablet-pad.c
@@ -403,6 +403,10 @@ pad_process(struct evdev_dispatch *dispatch,
 	case EV_SYN:
 		pad_flush(pad, device, time);
 		break;
+	case EV_MSC:
+		/* The EKR sends the serial as MSC_SERIAL, ignore this for
+		 * now */
+		break;
 	default:
 		log_error(device->base.seat->libinput,
 			  "Unexpected event type %s (%#x)\n",

commit 23bacd16c348e48465f84188c84a2500ecc18002
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Tue May 24 11:47:48 2016 +1000

    doc: update ref/unref behavior for the tablet tool
    
    Brings it in line with the rest of libinput.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 40e3fe23849e90e50c6bdb4e848b7be120c101a1)

diff --git a/src/libinput.h b/src/libinput.h
index 5b08035..3053909 100644
--- a/src/libinput.h
+++ b/src/libinput.h
@@ -1889,10 +1889,13 @@ libinput_event_tablet_tool_get_y_transformed(struct libinput_event_tablet_tool *
  *
  * Returns the tool that was in use during this event.
  *
- * If the caller holds at least one reference (see
- * libinput_tablet_tool_ref()), this struct is used whenever the
- * tools enters proximity. Otherwise, if no references remain when the tool
- * leaves proximity, the tool may be destroyed.
+ * The returned tablet tool is not refcounted and may become invalid after
+ * the next call to libinput. Use libinput_tablet_tool_ref() and
+ * libinput_tablet_tool_unref() to continue using the handle outside of the
+ * immediate scope.
+ *
+ * If the caller holds at least one reference, this struct is used


Reply to: