summaryrefslogtreecommitdiff
path: root/Xext
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2010-10-19 13:37:46 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2010-10-22 11:02:48 +1000
commit675f4a8525d29ebad783351e17be785b2f32b2e8 (patch)
tree4a1aba9abeb869d0eedb1bbaf01f14c59bf778a0 /Xext
parentfc48a8f9f5f66e591b3e39211d44ce68267303f8 (diff)
Abstract valuator masks through a set of APIs.
This commit introduces an abstraction API for handling masked valuators. The intent is that drivers just allocate a mask, set the data and pass the mask to the server. The actual storage type of the mask is hidden from the drivers. The new calls for drivers are: valuator_mask_new() /* to allocate a valuator mask */ valuator_mask_zero() /* to reset a mask to zero */ valuator_mask_set() /* to set a valuator value */ The new interface to the server is xf86PostMotionEventM() xf86PostButtonEventM() xf86PostKeyboardEventM() xf86PostProximityEventM() all taking a mask instead of the valuator array. The ValuatorMask is currently defined for MAX_VALUATORS fixed size due to memory allocation restrictions in SIGIO handlers. For easier review, a lot of the code still uses separate valuator arrays. This will be fixed in a later patch. This patch was initially written by Chase Douglas. Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
Diffstat (limited to 'Xext')
-rw-r--r--Xext/xtest.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/Xext/xtest.c b/Xext/xtest.c
index d7d254c18..b26bc3387 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -52,6 +52,7 @@
#include "mipointer.h"
#include "xserver-properties.h"
#include "exevents.h"
+#include "inpututils.h"
#include "modinit.h"
@@ -153,6 +154,7 @@ ProcXTestFakeInput(ClientPtr client)
WindowPtr root;
Bool extension = FALSE;
deviceValuator *dv = NULL;
+ ValuatorMask mask;
int valuators[MAX_VALUATORS] = {0};
int numValuators = 0;
int firstValuator = 0;
@@ -413,14 +415,14 @@ ProcXTestFakeInput(ClientPtr client)
switch(type) {
case MotionNotify:
- nevents = GetPointerEvents(xtest_evlist, dev, type, 0, flags,
- firstValuator, numValuators, valuators);
+ valuator_mask_set_range(&mask, firstValuator, numValuators, valuators);
+ nevents = GetPointerEvents(xtest_evlist, dev, type, 0, flags, &mask);
break;
case ButtonPress:
case ButtonRelease:
+ valuator_mask_set_range(&mask, firstValuator, numValuators, valuators);
nevents = GetPointerEvents(xtest_evlist, dev, type, ev->u.u.detail,
- flags, firstValuator,
- numValuators, valuators);
+ flags, &mask);
break;
case KeyPress:
case KeyRelease: