dix: more device scaling insanity.

Assuming master->last.valuators is in screen coords, SD's are always in device
coordinates.

1. If an event comes in, scale masters->last to the device, drop into device's
last->valuators.
2. Apply motion from the actual event
3. Scale back to screen coords, check if we may need to cross screens
4. Drop screen coords into master->last
5. Rescale to device coords, drop into deviceValuator event and SD->last
6. Drop screen coords into ev->root_x/y

Whoopee...
This commit is contained in:
Peter Hutterer
2008-05-23 12:51:52 +09:30
parent 6c9e9f8a40
commit fe59b1a62b
2 changed files with 41 additions and 31 deletions

View File

@@ -422,6 +422,8 @@ typedef struct _DeviceIntRec {
} u;
/* last valuator values recorded, not posted to client;
* for slave devices, valuators is in device coordinates
* for master devices, valuators is in screen coordinates
* see dix/getevents.c */
struct {
int valuators[MAX_VALUATORS];