On Tue, Feb 9, 2010 at 12:25 AM, Ping Cheng <[email protected]> wrote: > On Mon, Feb 8, 2010 at 9:15 PM, Chris Bagwell <[email protected]> wrote: >> On Mon, Feb 8, 2010 at 9:43 PM, Jason Childs >> <[email protected]> wrote: >> >> Thanks for feedback. I was hoping to hear about your experience. >> I've added printk's and looks good to me as well; at least it seems I >> can't reproduce the same behaviors anymore. I guess I'll switch back >> to x driver for some more debugging. > > Tracking the difference between kernel and X when jump appears would > help us figure out what might be the root cause. >
I've caught it in the act in log files though still haven't issolated issue yet. Here is an example of me lifting two fingers up, putting back down and starting an upwards swipe. Kernel logs show good X/Y values in all cases but in one case X shows invalid Y value for channel 1 (second finger). My initial guess is its related to sending multiple out-of-proximity events or something similar. that firstFinger/secondFinger logic seems suspecious. Since I do not know yet how X buffers old data, I could use any hints you have from here. There are rounding type errors between what kernel sends and X prints out and I'm not sure where that is occuring yet and is probably related to were bug is. Sorry for such verbose log info; especially with most being personal printk()'s. Hopefully, it gives someone someone some ideas. Interesting examples of lines are: X/Y values kernel wants to send. tools=333 is 1st finger and tools=334 is seoncd finger. Feb 9 20:15:35 localhost kernel: wacom_bpt_finger_in: x=185 y=272 pressure=70 i d=3, tools=333 X/Y values Xorg recieves. channel=0 is 1st finger, channel=1 is second finger. (II) /dev/input/event6 (wcmEvent): channel = 1 (II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=261 y=171 b=0 p=181 rz=0 tx =0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4 Now some detailed log file parts: 1) Send two fingers to X eb 9 20:15:35 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80 data[12]= ffffff81 firstFinger=1 secondFigner=1 Feb 9 20:15:35 localhost kernel: wacom_bpt_finger_in: x=185 y=272 pressure=70 i d=3, tools=333 Feb 9 20:15:35 localhost kernel: wacom_bpt_finger_in: x=261 y=272 pressure=87 i d=3, tools=334 Feb 9 20:15:35 localhost kernel: wacom_bpt_touch_in: end data[3]=ffffff80 data[ 12]=ffffff81 firstFinger=1 secondFigner=1 2) X parses them II) /dev/input/event6 (usbParseChannel): 5 events received (II) /dev/input/event6 (usbParseChannel): 5 events received (II) /dev/input/event6 (wcmEvent): channel = 0 (II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=185 y=272 b=0 p=196 rz=0 tx =0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121227770 cs=4 (II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4 (II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1 (II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel = 0, mode = 8, ds[0].x = 182, ds[0].y = 254, ds[1].x = 257, ds[1].y = 171, ds[0].sample = 11 21227770, ds[1].sample = 1121227755, wcmGestureState[0].sample = 1121227674, wcm GestureState[1].sample = 1121227655, wcmGestureFingers = 2 ds[0].proximity = tru e, ds[1].proximity = true (II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmFingerScroll): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseChannel): 3 events received (II) /dev/input/event6 (usbParseChannel): 3 events received (II) /dev/input/event6 (usbParseChannel): USB Touch second finger detected 14e ( value=0) (II) /dev/input/event6 (wcmEvent): channel = 1 (II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=261 y=171 b=0 p=181 rz=0 tx =0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4 3) Kernel sends out of proximity for both fingers when I lift them: Feb 9 20:15:35 localhost kernel: wacom_bpt_irq: prox=0 touchOut=1 id[1]=3 touch InProx=1 Feb 9 20:15:35 localhost kernel: wacom_bpt_touch_out: id=3, tools=333 Feb 9 20:15:35 localhost kernel: wacom_bpt_touch_out: id=3, tools=334 4) X process out of proximity events for both fingers: (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseChannel): 4 events received (II) /dev/input/event6 (usbParseChannel): 4 events received (II) /dev/input/event6 (usbParseChannel): USB Touch detected 14d (value=0) (II) /dev/input/event6 (wcmEvent): channel = 0 (II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=185 y=272 b=0 p=196 rz=0 tx =0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4 (II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4 (II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1 (II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel = 0, mode = 8, ds[0].x = 184, ds[0].y = 263, ds[1].x = 257, ds[1].y = 171, ds[0].sample = 11 21227792, ds[1].sample = 1121227771, wcmGestureState[0].sample = 1121227770, wcm GestureState[1].sample = 1121227755, wcmGestureFingers = 2 ds[0].proximity = false, ds[1].proximity = true (II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmFingerScroll): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseChannel): 3 events received (II) /dev/input/event6 (usbParseChannel): 3 events received (II) /dev/input/event6 (usbParseChannel): USB Touch second finger detected 14e (value=0) (II) /dev/input/event6 (wcmEvent): channel = 1 (II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=261 y=171 b=0 p=181 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=0 st=1121227792 cs=4 (II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4 (II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1 (II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel = 1, mode = 8, ds[0].x = 184, ds[0].y = 263, ds[1].x = 260, ds[1].y = 171, ds[0].sample = 1121227792, ds[1].sample = 1121227792, wcmGestureState[0].sample = 1121227770, wcmGestureState[1].sample = 1121227755, wcmGestureFingers = 2 ds[0].proximity = false, ds[1].proximity = false 5) Kernel sends new in proxity event for 1st finger and out of proximity event for finger 2. Feb 9 20:15:36 localhost kernel: wacom_bpt_irq: prox=1 touchOut=0 id[1]=3 touch InProx=1 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: tool[0]=333, id[0]=3 tool[1]=334 id[1]=1 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80 data[12]=0 firstFinger=1 secondFigner=1 Feb 9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=136 y=267 pressure=89 id=3, tools=333 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_out: id=3, tools=334 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: end data[3]=ffffff80 data[12]=0 firstFinger=1 secondFigner=0 6) X process 1st finger but not second finger proximity out: (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseChannel): 7 events received (II) /dev/input/event6 (usbParseChannel): 7 events received (II) /dev/input/event6 (usbParseChannel): USB Touch detected 14d (value=1) (II) /dev/input/event6 (wcmEvent): channel = 0 (II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=136 y=269 b=0 p=89 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228515 cs=0 (II) /dev/input/event6 (wcmEvent): initialize Channel data. (II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel = 0, mode = 0, ds[0].x = 136, ds[0].y = 269, ds[1].x = 260, ds[1].y = 171, ds[0].sample = 1121228515, ds[1].sample = 1121227792, wcmGestureState[0].sample = 1121227770, wcmGestureState[1].sample = 1121227755, wcmGestureFingers = 2 ds[0].proximity = true, ds[1].proximity = false 7) Interesting note for X. Probably because last out-of-proxity event was duplicate? Or could be related to next step. (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseEvent): Wacom Bamboo P&T 4x5 Touch: dropping empty event for serial 2 (II) /dev/input/event6 (wcmReadPacket): fd=25 (II) /dev/input/event6 (wcmReadPacket): pos=0 remaining=256 (II) /dev/input/event6 (wcmReadPacket): buffer has 96 bytes 8) kernel send previous 1 finger value again. I don't really see what changed. Feb 9 20:15:36 localhost kernel: wacom_bpt_irq: prox=1 touchOut=1 id[1]=1 touchInProx=1 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: tool[0]=333, id[0]=3 tool[1]=334 id[1]=1 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80 data[12]=0 firstFinger=1 secondFigner=0 Feb 9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=136 y=267 pressure=89 id=3, tools=333 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: end data[3]=ffffff80 data[12]=0 firstFinger=1 secondFigner=0 9) Looks like X gets this finger: II) /dev/input/event6 (wcmEvent): channel = 0 (II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=136 y=268 b=0 p=89 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228534 cs=1 (II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4 (II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 0 (II) /dev/input/event6 (wcmReadPacket): fd=25 10) Kernel sends 1&2 finger events. 1st finger is similar to first finger from above. This is first real 2nd finger send since I put my fingers down. 216/250 look OK. Feb 9 20:15:36 localhost kernel: wacom_bpt_irq: prox=1 touchOut=1 id[1]=1 touchInProx=1 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: tool[0]=333, id[0]=3 tool[1]=334 id[1]=3 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: data[3]=ffffff80 data[12]=ffffff80 firstFinger=1 secondFigner=0 Feb 9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=137 y=250 pressure=152 id=3, tools=333 Feb 9 20:15:36 localhost kernel: wacom_bpt_finger_in: x=216 y=250 pressure=164 id=3, tools=334 Feb 9 20:15:36 localhost kernel: wacom_bpt_touch_in: end data[3]=ffffff80 data[12]=ffffff80 firstFinger=1 secondFigner=1 11) X processes 1st finger and 2nd finger. Second finger/channel 1 Y value is not right (its zero). X value matches. (II) /dev/input/event6 (usbParseChannel): 4 events received (II) /dev/input/event6 (usbParseChannel): 4 events received (II) /dev/input/event6 (wcmEvent): channel = 0 (II) /dev/input/event6 (wcmEvent): c=0 i=3 t=2 s=0 x=136 y=250 b=0 p=89 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228554 cs=1 (II) /dev/input/event6 (wcmFilterCoord): common->wcmRawSample = 4 (II) /dev/input/event6 (wcmCheckSuppress): level = 2 return value = 1 (II) Wacom Bamboo P&T 4x5 Touch touch (xf86WcmTouchFilter): channel = 0, mode = 1, ds[0].x = 136, ds[0].y = 264, ds[1].x = 260, ds[1].y = 171, ds[0].sample = 1121228554, ds[1].sample = 1121227792, wcmGestureState[0].sample = 1121228515, wcmGestureState[1].sample = 1121227755, wcmGestureFingers = 1 ds[0].proximity = true, ds[1].proximity = false II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseEvent): (II) /dev/input/event6 (usbParseChannel): 5 events received (II) /dev/input/event6 (usbParseChannel): 5 events received (II) /dev/input/event6 (usbParseChannel): USB Touch second finger detected 14e (value=1) (II) /dev/input/event6 (wcmEvent): channel = 1 (II) /dev/input/event6 (wcmEvent): c=1 i=3 t=2 s=2 x=216 y=0 b=0 p=164 rz=0 tx=0 ty=0 aw=0 rw=0 t=0 df=0 px=1 st=1121228555 cs=0 (II) /dev/input/event6 (wcmEvent): initialize Channel data. Chris ------------------------------------------------------------------------------ SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev _______________________________________________ Linuxwacom-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
