Touch some edge points of the touchscreen the weston crash

zhaojinkun zhaojinkun at xmgme.com
Thu Jun 23 09:17:03 UTC 2016


Hi,

After calibrating , I can touch almost points correctly.But when I touch 
some edge points of the touchscreen the weston crash.
The method of calibration is:
         1.$libinput-list-devides
             Device:           myts-ft5x0x
             Kernel:           /dev/input/event0
             Group:            3
             Seat:             seat0, default
             Capabilities:     touch
             Tap-to-click:     n/a
             Tap-and-drag:     n/a
             Tap drag lock:    n/a
             Left-handed:      n/a
             Nat.scrolling:    n/a
             Middle emulation: n/a
             Calibration:      identity matrix
             Scroll methods:   none
             Click methods:    none
             Disable-w-typing: n/a
             Accel profiles:   n/a
             Rotation:         n/a
         2.$weston-calibrator
            Calibration values:  1.286611 0.085774 -40.799133 -0.015215 
1.211107 19.864624
         3.Add the .rules file in /etc/udev/rules.d/
           $cat /etc/udev/rules.d/touch-calibration.rules
               ATTRS{name}=="myts-ft5x0x", ENV{WL_CALIBRATION}="1.286611 
0.085774 -40.799133 -0.015215 1.211107 19.864624"
         4.$/etc/init.d/udev restart

Using the gdb to debug,I found that:
         #0  0x76d9e9c4 in __GI_raise (sig=5) at 
../sysdeps/unix/sysv/linux/raise.c:55
         #1  <signal handler called>
         #2  weston_view_from_global_float (view=0x0, x=-nan(0x7f007c), 
y=9.18354962e-41, vx=0x7efff658, vy=0x7efff65c) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/compositor.c:1350
         #3  0x00012468 in weston_view_from_global_fixed 
(view=<optimized out>, x=<optimized out>, y=y at entry=211820, 
vx=0x7efff690, vx at entry=0x7efff688, vy=0x7efff694, vy at entry=0x7efff68c)
             at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/compositor.c:1379
         #4  0x00016e28 in default_grab_touch_down (grab=<optimized 
out>, time=671019, touch_id=0, x=<optimized out>, y=36292) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/input.c:248
         #5  0x00019988 in notify_touch (seat=<optimized out>, 
time=time at entry=671019, touch_id=touch_id at entry=0, x=-4092, y=36292, 
touch_type=touch_type at entry=0) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/input.c:1582
         #6  0x76c93ef0 in handle_touch_with_coords 
(libinput_device=libinput_device at entry=0x2b7628, touch_event=0x328f90, 
touch_type=touch_type at entry=0) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/libinput-device.c:250
         #7  0x76c94384 in handle_touch_down (touch_event=<optimized 
out>, device=0x2b7628) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/libinput-device.c:257
         #8  evdev_device_process_event (event=event at entry=0x328f90) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/libinput-device.c:320
         #9  0x76c93a6c in process_event (event=0x328f90) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/libinput-seat.c:161
         #10 process_events (input=<optimized out>) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/libinput-seat.c:171
         #11 0x76c93d14 in udev_input_dispatch (input=0x33b6c) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/libinput-seat.c:182
         #12 libinput_source_dispatch (fd=<optimized out>, 
mask=<optimized out>, data=0x33b6c) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/libinput-seat.c:192
         #13 0x76fca2e8 in wl_event_loop_dispatch (loop=0x304f0, 
timeout=timeout at entry=-1) at 
/usr/src/debug/wayland/1.9.0-r0/wayland-1.9.0/src/event-loop.c:422
         #14 0x76fc8bb4 in wl_display_run 
(display=display at entry=0x30478) at 
/usr/src/debug/wayland/1.9.0-r0/wayland-1.9.0/src/wayland-server.c:1004
         #15 0x0000f9c0 in main (argc=1, argv=0x7efffdb4) at 
/usr/src/debug/weston/1.9.0-r0/weston-1.9.0/src/main.c:818

So when weston_view_from_global_float() access the view which is null, 
the weston crash.

At last I found that after calling transform_absolute(device, &x, &y) 
which is in libinput's evdev.c,the variable x will change to 
negative.Then the weston will consider the view is Null.
Is it the problem of weston-calibrator?

ThankYou


More information about the wayland-devel mailing list