From 3f4295e643ca56c40f33af7966e8efd367ef8749 Mon Sep 17 00:00:00 2001 From: "Zephaniah E. Hull" Date: Mon, 4 Jun 2007 06:48:06 -0400 Subject: [PATCH] Add xf86PostMotionEventP, takes a pointer instead of a variable number of arguments. Bump input ABI to 1.1 since we export this. --- hw/xfree86/common/xf86Module.h | 2 +- hw/xfree86/common/xf86Xinput.c | 40 +++++++++++++++++++++------------- hw/xfree86/common/xf86Xinput.h | 2 ++ 3 files changed, 28 insertions(+), 16 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,18 +462,8 @@ xf86PostMotionEvent(DeviceIntPtr device, ...) { va_list var; - int i = 0, nevents = 0; - int dx, dy; - Bool drag = xf86SendDragEvents(device); + int i = 0; int *valuators = NULL; - int flags = 0; - xEvent *xE = NULL; - int index; - - if (is_absolute) - flags = POINTER_ABSOLUTE; - else - flags = POINTER_RELATIVE | POINTER_ACCELERATE; valuators = xcalloc(sizeof(int), num_valuators); @@ -482,6 +472,29 @@ xf86PostMotionEvent(DeviceIntPtr device, 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); + xEvent *xE = NULL; + int index; + int flags = 0; + + if (is_absolute) + flags = POINTER_ABSOLUTE; + else + flags = POINTER_RELATIVE | POINTER_ACCELERATE; + #if XFreeXDGA if (first_valuator == 0 && num_valuators >= 2) { if (miPointerGetScreen(inputInfo.pointer)) { @@ -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,