Hi Jason,

Thank you for the patches.  The spelling one is accepted.  For the
other one, please see my questions in line.

Ping

On Mon, Jan 4, 2010 at 6:24 PM, Jason Childs
<[email protected]> wrote:
> Hello all,
>
> I've been over on the Ubuntu list, and I was asked to put the latest
> patch over here.  I figured the devel list was the best place to send
> this.  I just got done testing a second revision of the patch.  The
> other patch I'm attaching (linuxwacom-0.8.5-9-spelling.patch) is a
> spelling correction of the function xf86WcmVirtualTabletSize (spelled
> virtaul in the code).  The patch gets pen working again on the Bamboo
> P&T tablets 0xd0-0xd4 and fixes the touch scaling for 0xd0-0xd3
> tablets with touch.
>
> As far a bugs, the gesture scrolling and zooming is still not working
> reliably.  I think there is more work that needs to be done on the
> kernel side to clean up the finger up events since it is
> differentiating between which finger was released and the X driver may
> see the first finger lift while the second is still down, which gets
> the cursor locked in gesture mode.  Also if the tablet is plugged in
> after X is already running (even gdm), HAL will send the pad and touch
> devices out of order and pad gets all the good data about what the
> size of the tablet should be.  Seems like there is no good place to
> try and copy the pad data over to the touch subdevice to alleviate
> this problem and with HAL going away, it might not be worth it to fix
> it.
>
> I've tried to describe the changes clearly below, but please let me
> know if you have any questions.
>
> Thanks,
> Jason
>
> A summary of the changes in linuxwacom-0.8.5-9-2.patch is below:
>
> src/2.6.27/wacom_sys.c:
>  * input_set_abs_params for input_dev_bpt now sends
>    wacom_wac->features->x_max/y_max for both pen and touch interfaces.

x_max/y_max should be sent by ABS_X/ABS_Y instead of ABS_RX/ABS_RY.


I don't have time to work or test these tablets.  So, I have to rely
on your result.


>  * changed pktlen for BAMBOO_PT to WACOM_PKGLEN_BBFUN since
>    the 0xd0-0xd4 devices have a pen packet length of 9.
>  * send features->x_phy/y_phy for ABS_X and ABS_X since tablet size is
>     480x320 and those numbers appear in the phy variables, max variables
>     are 12000x8000 for the touch interface.

Then we should reassign the x_max/y_max to x_phy/y_phy in
wacom_parse_hid properly instead of twisting them here.

>  * added spin_lock_init back in to support spin_locks in the wacom_bpt_irq
>    interrupt handler.

Is there a reason that we need to call these routines?


> src/2.6.27/wacom_wac.c
>  * added a debug printout of the data from the tablet
>  * added spin_lock/spin_unlock calls around static data access.
>    (note: without these major crashes happen when you have your hand
>     resting on the tablet while using the pen, since both packets are being
>     sent from the tablet simultaneously in that case).

We need to turn the touch off (i.e., ignore touch data) as soon as a
pen is in prox.  Touch would only be resumed when pen is out of prox
and a new touch is in (i.e., the finger is out and back in again if it
was in prox).  Make sure the stylusInProx and touchInProx are assigned
the same way as in wacom_tpc_irq.  I think you may have an order issue
there.

>  * change all references of pen length from WACOM_PKGLEN_GRAPHIRE
>    to WACOM_PKGLEN_BBFUN since the pen packet length is 9 for devices
>    0xd0-0xd4.
> src/2.6.27/wacom_wac.h
>  * added extern reference to bpt_lock spinlock_t variable for use in
> wacom_sys.c
> src/xdrv/wcmCommon.c
>  * reordered the one/two finger touch routines in wcmEvent since the
>    common->wcmGesture variable was being used to determine if single
>    finger events should be processed.  This never changes once the tablet has
>    been initialised and one finger touch never worked.  (This was masked by 
> the
>    capacity issue below).

Separating the one finger touch from the 2FGT code will make it easier
for us to maintain the code.  I'd like to see a new block added just
to process the one finger touch.

>  * common->wcmCapacityDefault was used in some places rather than the
>    configurable common->wcmCapacity.

wcmCapacityDefault check is to see if Capacity is supported for the
device or not.. It is decided by the driver which end users can not
change. So, they should stay in those two places.

wcmCapacity is a variable can be changed by end users.  The set
wcmCapacityDefault to 3 below should be enough.  You need to update
wcmCapacity in wcmUSB.c based on the value of wcmCapacityDefault and
user's input.  Something like:

        common->wcmCapacity = xf86SetBoolOption(local->options,
                                "Capacity", common->wcmCapacityDefault);


> src/xdrv/wcmConfig.c
>  * added capacity check for tablet_id 0xd0 to 0xd3.  it will set the
>    common->wcmCapacityDefault = 3 (as stated in comments for it in
>    xf86WcmAllocate).  This keeps the left click from always being pressed
>    when a single finger touches the tablet.
> src/xdrv/wcmUSB.c
>  * changed a check of common->wcmCapacityDefault to check
>     common->wcmCapacity instead.

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Linuxwacom-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to