Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
TabletTool: ignore inconsistent tip down/up events
There has been a report of libinput sometimes emitting an up event
without prior matching down on tty switch for example.
Don't assert that libinput's tip down/up events are consistent.
river/TabletTool.zig | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/river/TabletTool.zig b/river/TabletTool.zig
index 0a8ab2d..56977e6 100644
--- a/river/TabletTool.zig
+++ b/river/TabletTool.zig
@@ -201,7 +201,8 @@ pub fn proximity(tool: *TabletTool, tablet: *Tablet, event: *wlr.Tablet.event.Pr
pub fn tip(tool: *TabletTool, tablet: *Tablet, event: *wlr.Tablet.event.Tip) void {
switch (event.state) {
.down => {
- assert(!tool.wp_tool.is_down);
+ // There have been reports of libinput emitting inconsistent down/up events.
+ if (tool.wp_tool.is_down) return;
tool.wp_tool.notifyDown();
@@ -219,7 +220,8 @@ pub fn tip(tool: *TabletTool, tablet: *Tablet, event: *wlr.Tablet.event.Tip) voi
}
},
.up => {
- assert(tool.wp_tool.is_down);
+ // There have been reports of libinput emitting inconsistent down/up events.
+ if (!tool.wp_tool.is_down) return;
tool.wp_tool.notifyUp();
tool.maybeExitDown(tablet);