diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 69277203d..411deddab 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -501,7 +501,13 @@ int SetDeviceValuators (ClientPtr client, DeviceIntPtr dev, int *valuators, int first_valuator, int num_valuators) { - return BadMatch; + LocalDevicePtr local = (LocalDevicePtr) dev->public.devicePrivate; + + if (local->set_device_valuators) + return (*local->set_device_valuators)(local, valuators, first_valuator, + num_valuators); + + return BadMatch; } diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h index 444b2d488..73dcdb75e 100644 --- a/hw/xfree86/common/xf86Xinput.h +++ b/hw/xfree86/common/xf86Xinput.h @@ -113,7 +113,7 @@ typedef struct _LocalDeviceRec { struct _LocalDeviceRec *next; char * name; int flags; - + Bool (*device_control)(DeviceIntPtr device, int what); void (*read_input)(struct _LocalDeviceRec *local); int (*control_proc)(struct _LocalDeviceRec *local, @@ -128,7 +128,11 @@ typedef struct _LocalDeviceRec { Bool (*reverse_conversion_proc)( struct _LocalDeviceRec *local, int x, int y, int *valuators); - + int (*set_device_valuators) + (struct _LocalDeviceRec *local, + int *valuators, int first_valuator, + int num_valuators); + int fd; Atom atom; DeviceIntPtr dev;