weston/src
Neil Roberts daf7d4774b evdev: Only track one pending event
Instead of having a mask of pending events there is now an enum with a
single value to represent the one pending event. The event gets
flushed explicitly as part of the handling code for each event type
rather than in the outer event reading loop. The pending event is used
so that we can combine multiple motion events into one and to make
sure that we have recieved the latest position before sending a touch
up or down event. This should fix the following problems with the old
approach:

• If you release a finger and press it down again quickly you could
  get the up and down events in the same batch. However the pending
  events were always processed in the order down then up so it would
  end up notifying two down events and then an up. The pending event
  is now always flushed when there is a new up or down event so they
  will always be in the right order.

• When it got a slot event it would immediately change the slot number
  and then set the pending event. Then when it flushed the events it
  would use the new slot number to flush the old pending event so the
  events could have the wrong finger. The pending event is now
  immediately flushed when a slot event is received so it will have
  the right finger.

• If you get more than 32 events in one read then it was resetting the
  pending events before processing the next batch in
  evdev_process_events. If four fingers were pressed down at once then
  it ended up with more than 32 events and the sync message would be
  in the second batch. The pending flag for the last finger was
  getting cleared so it never got emitted. In this patch the pending
  event is no longer reset after reading nor is it explicitly flushed.
  Instead it is flushed when we receive a EV_SYN event or a different
  pending event needs to replace it.

The touchpad handling code was trying to use the pending event
mechanism to notify the relative motion events. I'm not sure why it
was doing this because it looks the event would effectively get
emitted as soon as the touchpad_process function is finished anyway
and it wasn't accumulating the values. Instead I've just changed it to
emit the event directly.

https://bugs.freedesktop.org/show_bug.cgi?id=67563
2013-09-24 16:22:19 -07:00
..
xwayland xwm: remove the destroy listener from the old surface signal 2013-09-21 20:58:53 -07:00
.gitignore protocol: add sub-surfaces 2013-05-10 14:05:59 -04:00
animation.c Restoring alpha after the shell effects. 2013-09-21 11:26:46 -07:00
bindings.c input: Emit events on all resources for a client 2013-09-21 20:56:55 -07:00
clipboard.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
cms-colord.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
cms-helper.c configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
cms-helper.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
cms-static.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
compositor-drm.c Notify clients on mode_switch() 2013-09-21 11:40:21 -07:00
compositor-fbdev.c Notify clients on mode_switch() 2013-09-21 11:40:21 -07:00
compositor-headless.c Notify clients on mode_switch() 2013-09-21 11:40:21 -07:00
compositor-rdp.c Notify clients on mode_switch() 2013-09-21 11:40:21 -07:00
compositor-rpi.c Notify clients on mode_switch() 2013-09-21 11:40:21 -07:00
compositor-wayland.c Notify clients on mode_switch() 2013-09-21 11:40:21 -07:00
compositor-x11.c Notify clients on mode_switch() 2013-09-21 11:40:21 -07:00
compositor.c compositor: when unmapping a surface remove it from the compositor's list 2013-09-22 13:39:45 -07:00
compositor.h input: Emit events on all resources for a client 2013-09-21 20:56:55 -07:00
data-device.c input: Emit events on all resources for a client 2013-09-21 20:56:55 -07:00
evdev-touchpad.c evdev: Only track one pending event 2013-09-24 16:22:19 -07:00
evdev.c evdev: Only track one pending event 2013-09-24 16:22:19 -07:00
evdev.h evdev: Only track one pending event 2013-09-24 16:22:19 -07:00
filter.c configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
filter.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
gl-renderer.c Rename current, origin, scale, origin_scale 2013-09-21 11:40:17 -07:00
gl-renderer.h configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
input.c input: check that the new focus surface has a valid resource 2013-09-23 10:09:37 -07:00
launcher-util.c launcher: Move rest of tty object into struct weston_launcher 2013-09-18 23:00:17 -07:00
launcher-util.h launcher: Move rest of tty object into struct weston_launcher 2013-09-18 23:00:17 -07:00
libbacklight.c configure.ac: Enable AC_USE_SYSTEM_EXTENSIONS 2013-06-05 01:16:34 -04:00
libbacklight.h Fix a few -pedantic warnings 2012-05-10 14:11:44 -04:00
log.c Use #define WL_HIDE_DEPRECATED to avoid deprecated warnings for wl_buffer 2013-08-06 19:27:04 -07:00
Makefile.am Add vaapi-recorder.h to SOURCES to fix distcheck 2013-09-22 14:28:38 -07:00
noop-renderer.c Add a weston_buffer structure to replace wl_buffer 2013-06-21 23:22:30 -04:00
pixman-renderer.c Rename current, origin, scale, origin_scale 2013-09-21 11:40:17 -07:00
pixman-renderer.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
rpi-bcm-stubs.h rpi: Add support for SHM buffers in RGB565 format 2013-08-06 16:51:14 -07:00
rpi-renderer.c Rename current, origin, scale, origin_scale 2013-09-21 11:40:17 -07:00
rpi-renderer.h rpi: add a Dispmanx renderer 2013-05-22 17:05:45 -04:00
screenshooter.c Rename current, origin, scale, origin_scale 2013-09-21 11:40:17 -07:00
shell.c input: Emit events on all resources for a client 2013-09-21 20:56:55 -07:00
spring-tool.c Add more missing config.h includes 2013-08-16 10:56:00 -07:00
tablet-shell.c malloc + memset -> zalloc 2013-08-08 13:46:13 -07:00
text-backend.c Copying xkb_info when creating a seat causes problems 2013-09-11 10:06:23 -07:00
udev-seat.c launcher: Collect launcher state in new struct weston_launcher 2013-09-18 11:14:14 -07:00
udev-seat.h Add more missing config.h includes 2013-08-16 10:56:00 -07:00
vaapi-recorder.c vaapi-recorder: Don't leak drm fd 2013-09-11 11:55:32 -07:00
vaapi-recorder.h compositor-drm: Add hardware accelerated capture of screen using libva 2013-08-30 13:44:40 -07:00
version.h.in version.h: Add version check macro 2013-09-23 10:42:19 -07:00
vertex-clipping.c Split vertex clipping code out into vertex-clipping.c 2013-09-16 21:40:31 -07:00
vertex-clipping.h Split vertex clipping code out into vertex-clipping.c 2013-09-16 21:40:31 -07:00
weston-egl-ext.h gl_renderer: Use EGL_WAYLAND_Y_INVERTED_WL to query wl_buffer's orientation 2013-09-11 10:56:00 -07:00
weston-launch.c launcher: Move rest of tty object into struct weston_launcher 2013-09-18 23:00:17 -07:00
weston-launch.h launcher: Handle drm set/drop master and vt switch signals in launcher 2013-09-18 11:14:14 -07:00
weston.pc.in weston.pc: Added libexecdir and pkglibexecdir variables 2013-06-04 00:14:04 -04:00
zoom.c Convert to wl_global_create/destroy() 2013-07-09 02:02:11 -04:00