Ok, I've done some preliminary testing, and fixed obvious bugs that have arisen.
What I found, and could fix:
Sometimes a badly configured tablet can generate X errors on the XOpenDevice method. Fixed by ensuring tablet driver was functional. I don't know if the errors need to be caught, or not, but I think they were causing crashes. This is probably related to synchonous/asynchonous X modes.
In Photoshop, an infinite loop in method FindOpenContext when attepting to traverse the wintab context chain.
In Painter, a number of methods didn't handle NULL prameters properly, resulting in various crashes. Wintab uses NULL paramters to signify a query for size of available data, or to signify a request to flush the Wintab packet queue.
Aric, I'm wondering if I should really be fixing these things, as these look like the kind of bugs Code Weavers will have fixed in the normal course of product support.
After fixing these issues, The following remain:
1. Photoshop doesn't seem to respond to pressure. 2. Painter receives wintab events, but coordinates are extreme: only see lines from one side of drawing to another. 3. Maybe some further research into the errors from XOpenDevice. I'm not convinced it is a problem.
Aric, are these the kind of bugs you were seeing with Painter?
I'm suspicious of the Wintab packet building code, as it has to build a C data struct on the fly. Looking at the code though, I can't see anything that could be going wrong. It could also be a scaling issue, where the scales deduced from X are wrong (I remember being suspicious of some of the values returned by the wacom driver).
I've got tons of trace code that runs as a wrapper round wintab on win98, and will move some of this into the wine impl for more testing. I hope this will help solve the remaining bugs.
I think in the light of the crashing bugs, Aric's patch shouldn't go in as-is.
If people want, I could post up a patch with the fixes I've added so far.
That's all for now. -Rob.