diff options
author | Zephaniah E. Hull <warp@agamemnon.b5> | 2007-06-04 06:48:06 -0400 |
---|---|---|
committer | Zephaniah E. Hull <warp@agamemnon.b5> | 2007-06-04 06:48:06 -0400 |
commit | 3f4295e643ca56c40f33af7966e8efd367ef8749 (patch) | |
tree | c463591b01b3647a2f565084daf3930715d9458b | |
parent | a4f3473c88370b8411e016ebab619cffd33e58f9 (diff) |
Add xf86PostMotionEventP, takes a pointer instead of a variable number of
arguments.
Bump input ABI to 1.1 since we export this.
-rw-r--r-- | hw/xfree86/common/xf86Module.h | 2 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Xinput.c | 36 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Xinput.h | 2 |
3 files changed, 26 insertions, 14 deletions
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h index 8e644c433..cdf3d1bea 100644 --- a/hw/xfree86/common/xf86Module.h +++ b/hw/xfree86/common/xf86Module.h @@ -85,7 +85,7 @@ typedef enum { */ #define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3) #define ABI_VIDEODRV_VERSION SET_ABI_VERSION(2, 0) -#define ABI_XINPUT_VERSION SET_ABI_VERSION(1, 0) +#define ABI_XINPUT_VERSION SET_ABI_VERSION(1, 1) #define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3) #define ABI_FONT_VERSION SET_ABI_VERSION(0, 5) diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 7a472766d..91e5fec24 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -462,25 +462,38 @@ xf86PostMotionEvent(DeviceIntPtr device, ...) { va_list var; + int i = 0; + int *valuators = NULL; + + valuators = xcalloc(sizeof(int), num_valuators); + + va_start(var, num_valuators); + for (i = 0; i < num_valuators; i++) + valuators[i] = va_arg(var, int); + va_end(var); + + xf86PostMotionEventP(device, is_absolute, first_valuator, num_valuators, valuators); + xfree(valuators); +} + +_X_EXPORT void +xf86PostMotionEventP(DeviceIntPtr device, + int is_absolute, + int first_valuator, + int num_valuators, + int *valuators) +{ int i = 0, nevents = 0; int dx, dy; Bool drag = xf86SendDragEvents(device); - int *valuators = NULL; - int flags = 0; xEvent *xE = NULL; int index; + int flags = 0; if (is_absolute) flags = POINTER_ABSOLUTE; else flags = POINTER_RELATIVE | POINTER_ACCELERATE; - - valuators = xcalloc(sizeof(int), num_valuators); - - va_start(var, num_valuators); - for (i = 0; i < num_valuators; i++) - valuators[i] = va_arg(var, int); - va_end(var); #if XFreeXDGA if (first_valuator == 0 && num_valuators >= 2) { @@ -495,7 +508,7 @@ xf86PostMotionEvent(DeviceIntPtr device, dy = valuators[1]; } if (DGAStealMotionEvent(index, dx, dy)) - goto out; + return; } } #endif @@ -517,9 +530,6 @@ xf86PostMotionEvent(DeviceIntPtr device, mieqEnqueue(device, xf86Events + i); } } - -out: - xfree(valuators); } _X_EXPORT void diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h index 7ef28ed73..f882b2608 100644 --- a/hw/xfree86/common/xf86Xinput.h +++ b/hw/xfree86/common/xf86Xinput.h @@ -163,6 +163,8 @@ extern InputInfoPtr xf86InputDevs; void InitExtInput(void); void xf86PostMotionEvent(DeviceIntPtr device, int is_absolute, int first_valuator, int num_valuators, ...); +void xf86PostMotionEventP(DeviceIntPtr device, int is_absolute, + int first_valuator, int num_valuators, int *valuators); void xf86PostProximityEvent(DeviceIntPtr device, int is_in, int first_valuator, int num_valuators, ...); void xf86PostButtonEvent(DeviceIntPtr device, int is_absolute, int button, |