[PATCH weston 00/13] Add tablet support

Peter Hutterer peter.hutterer at who-t.net
Wed Feb 3 05:13:47 UTC 2016


On Fri, Nov 06, 2015 at 03:13:46PM -0800, Jason Gerecke wrote:
> 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...

fwiw, the reason for this bug was:
http://lists.freedesktop.org/archives/wayland-devel/2016-February/026765.html

Cheers,
   Peter

> 
> 
> 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