summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZephaniah E. Hull <warp@agamemnon.b5>2007-06-04 06:48:06 -0400
committerZephaniah E. Hull <warp@agamemnon.b5>2007-06-04 06:48:06 -0400
commit3f4295e643ca56c40f33af7966e8efd367ef8749 (patch)
treec463591b01b3647a2f565084daf3930715d9458b
parenta4f3473c88370b8411e016ebab619cffd33e58f9 (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.h2
-rw-r--r--hw/xfree86/common/xf86Xinput.c36
-rw-r--r--hw/xfree86/common/xf86Xinput.h2
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,