aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2026-01-06 16:54:35 +0100
committerFurkan Sahin <furkan-dev@proton.me>2026-01-06 16:54:35 +0100
commit05f75a3ec90dce83e1e651441e2a8357ab6f9d48 (patch)
tree076dfe6e1a36f415bbfe417359f90d554ca7d2de
parentcf4d0d51af62bcb607829d96db625bfb96ad4708 (diff)
sway/input/cursor: fix crash on first stylus tap after reboot via null check
handle_tool_tip() previously used event->tool->data without checking for NULL. When launching sway for the first time after a reboot, and then tapping with a USI 2.0 stylus, the tool tip event is fired before the tool proximity event. As event->tool is initialized during the tool proximity handler handle_tool_proximity(), this was causing a crash. The fix adds a NULL check before accessing the fields of event->tool->data. In case of a NULL, a log message is emitted indicating that the tool tip event fired before proximity. This logic is identical to the logic in handle_tool_axis(). Fixes issue #8907
-rw-r--r--sway/input/cursor.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sway/input/cursor.c b/sway/input/cursor.c
index df62ef41..fc0f11fd 100644
--- a/sway/input/cursor.c
+++ b/sway/input/cursor.c
@@ -644,6 +644,11 @@ static void handle_tool_tip(struct wl_listener *listener, void *data) {
cursor_handle_activity_from_device(cursor, &event->tablet->base);
struct sway_tablet_tool *sway_tool = event->tool->data;
+ if (!sway_tool) {
+ sway_log(SWAY_DEBUG, "tool tip before proximity");
+ return;
+ }
+
struct wlr_tablet_v2_tablet *tablet_v2 = sway_tool->tablet->tablet_v2;
struct sway_seat *seat = cursor->seat;