[PATCH weston 00/13] Add tablet support

Jason Gerecke killertofu at gmail.com
Fri Nov 6 15:13:46 PST 2015


On Thu, Nov 5, 2015 at 8:31 PM, Peter Hutterer <peter.hutterer at who-t.net> wrote:
>
> This set adds support for graphics tablets to weston. It's not fully
> complete, there are a couple of fixmes in it but the patchset is getting a
> bit unwieldly. And there are some discussions on how to do things anyway.
>
> Note: This needs the tablet-support branch from libinput to work. And it is
> on top of Jonas's wip/wayland-protocols github branch (ff0452cea150c).
>
> Tablet events are sent serially, terminated by a frame event. A toolkit
> should accumulate them and then pass them on as one struct to the client. We
> don't do that atm, it may be beyond libtoytoolkit's scope to really
> integrate this properly.
>
> The tablet has a separate cursor. That's a conscious decision since the
> focus handling on tablets closer to an absolute touch screen than a mouse,
> but unlike touch you usually want a cursor shape to indicate the precise
> position.
>
> The rest is fairly straightforward, though as said above, some details are
> missing. Implementing this also showed that libinput needs a few extra
> things added to it.
>
> Cheers,
>   Peter

Having trouble getting this patchset to work properly for me. Of the
many times I've launched 'weston-tablet', only once did it work as
expected. The rest of the time I get no response and more often than
not a segfault when the pen leaves proximity (first backtrace). I've
also seen a segfault when simply trying to exit Weston with
CTRL+ALT+BACKSPACE (second backgrace).

Haven't had time to track down the cause; all I know at the moment is
that it seems the demo client's proximity_in_handler isn't actually
being called for some reason...


Program received signal SIGSEGV, Segmentation fault.
0x000000000041596f in default_grab_tablet_tool_proximity_out
(grab=0x20e8388, time=23980253) at src/input.c:812
812 if (weston_surface_is_mapped(tool->sprite->surface))
(gdb) bt
#0  0x000000000041596f in default_grab_tablet_tool_proximity_out
(grab=0x20e8388, time=23980253) at src/input.c:812
#1  0x0000000000418ffb in notify_tablet_tool_proximity_out
(tool=0x20e82d0, time=23980253) at src/input.c:2307
#2  0x00007fe3699a6ce1 in handle_tablet_proximity
(libinput_device=0x1c1d7c0, proximity_event=0x20e0580) at
src/libinput-device.c:320
#3  0x00007fe3699a7587 in evdev_device_process_event (event=0x20e0580)
at src/libinput-device.c:543
#4  0x00007fe3699a5cf3 in process_event (event=0x20e0580) at
src/libinput-seat.c:169
#5  0x00007fe3699a5d14 in process_events (input=0x1b07c88) at
src/libinput-seat.c:179
#6  0x00007fe3699a5d79 in udev_input_dispatch (input=0x1b07c88) at
src/libinput-seat.c:190
#7  0x00007fe3699a5da6 in libinput_source_dispatch (fd=16, mask=1,
data=0x1b07c88) at src/libinput-seat.c:200
#8  0x00007fe36b3bcc72 in wl_event_loop_dispatch (loop=0x1aef220,
timeout=timeout at entry=-1) at src/event-loop.c:422
#9  0x00007fe36b3bb5e5 in wl_display_run (display=0x1aef190) at
src/wayland-server.c:1004
#10 0x00000000004275c6 in main (argc=1, argv=0x7ffe86bcca88) at src/main.c:871


Program received signal SIGSEGV, Segmentation fault.
0x00007f3f3e63a0e7 in wl_list_remove (elm=0x195a910) at src/wayland-util.c:57
57 elm->prev->next = elm->next;
(gdb) bt
#0  0x00007f3f3e63a0e7 in wl_list_remove (elm=0x195a910) at
src/wayland-util.c:57
#1  0x000000000041550f in weston_tablet_destroy (tablet=0x195a8e0) at
src/input.c:699
#2  0x000000000041a9df in weston_seat_release_tablet
(tablet=0x195a8e0) at src/input.c:3116
#3  0x00007f3f3cc22ff3 in evdev_device_destroy (device=0x19acc80) at
src/libinput-device.c:867
#4  0x00007f3f3cc20bc6 in udev_seat_remove_devices (seat=0x19a8fa0) at
src/libinput-seat.c:126
#5  0x00007f3f3cc21427 in udev_seat_destroy (seat=0x19a8fa0) at
src/libinput-seat.c:397
#6  0x00007f3f3cc211b0 in udev_input_destroy (input=0x1852c88) at
src/libinput-seat.c:333
#7  0x00007f3f3cc1f5f7 in drm_destroy (ec=0x183bfc0) at
src/compositor-drm.c:2712
#8  0x000000000041379f in weston_compositor_destroy
(compositor=0x183bfc0) at src/compositor.c:4780
#9  0x00000000004275f1 in main (argc=1, argv=0x7ffdd6f32308) at src/main.c:882

Jason
---
Now instead of four in the eights place /
you’ve got three, ‘Cause you added one  /
(That is to say, eight) to the two,     /
But you can’t take seven from three,    /
So you look at the sixty-fours....


More information about the wayland-devel mailing list