diff options
author | Guido Günther <agx@sigxcpu.org> | 2019-06-28 11:07:45 +0200 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-07-04 14:45:58 +0300 |
commit | df3f0ffbb0bcce8a12c83b577fd688a4ec290e7e (patch) | |
tree | 027c7c047d3f09742a8e70b0fe278e355ce10f46 /backend/session/direct-ipc.c | |
parent | c2fb8a84a28c4bdfb5fa1f81ab19127e3e5b8a29 (diff) |
wlr_seat_touch: Don't destroy touch point with surface
When the surface is destroyed clear it's reference but wait for the up
event to destroy the touch point via wlr_seat_touch_notify_up().
If the surface is destroyed before the up event we end up with
incomplete sequences sent to the client like
[915821.276] wl_touch@3.down(146, 2475027, wl_surface@38, 0, 236.000000, 515.000000)
[915821.608] wl_touch@3.frame()
[915821.637] wl_touch@3.motion(2475027, 0, 236.000000, 515.000000)
[915821.779] wl_touch@3.frame()
so there's never an up event. While it should be something like
[2461229.051] wl_touch@3.down(81, 3236959, wl_surface@34, 0, 218.000000, 478.000000)
[2461229.435] wl_touch@3.frame()
[2461229.484] wl_touch@3.motion(3236959, 0, 218.000000, 478.000000)
[2461229.636] wl_touch@3.frame()
[2461277.520] wl_touch@3.up(82, 3237007, 0)
[2461277.681] wl_touch@3.frame()
this confuses toolkits intepreting the next down event incorrectly. So
don't destroy the touch point too early.
Diffstat (limited to 'backend/session/direct-ipc.c')
0 files changed, 0 insertions, 0 deletions