dix:
merge with code cleanup from master GetPointerEvents treats events in the same way as XINPUT devices when flag has POINTER_MULTIPOINTER set. xfree86/common: added XI86_MP_DEVICE flag and parsing in xf86ProcessCommonOptions added POINTER_MULTIPOINTER define. Is used in xf86PostMotionEvent and xf86PostButtonEvent for the flags that are passed into GetPointerEvents() global: added flags to configure.ac to enable/disable MPX define added flags to dix-config.h.in to define MPX
This commit is contained in:
parent
4d07b50372
commit
7ce2dc5784
|
@ -0,0 +1,25 @@
|
||||||
|
MPX Changelog file
|
||||||
|
|
||||||
|
== 16.11.06 ==
|
||||||
|
dix:
|
||||||
|
merge with code cleanup from master
|
||||||
|
GetPointerEvents treats events in the same way as XINPUT devices when flag
|
||||||
|
has POINTER_MULTIPOINTER set.
|
||||||
|
|
||||||
|
xfree86/common:
|
||||||
|
added XI86_MP_DEVICE flag and parsing in xf86ProcessCommonOptions
|
||||||
|
added POINTER_MULTIPOINTER define. Is used in xf86PostMotionEvent and
|
||||||
|
xf86PostButtonEvent for the flags that are passed into GetPointerEvents()
|
||||||
|
|
||||||
|
global:
|
||||||
|
added flags to configure.ac to enable/disable MPX define
|
||||||
|
added flags to dix-config.h.in to #define MPX
|
||||||
|
|
||||||
|
Files:
|
||||||
|
dix/getevents.c
|
||||||
|
hw/xfree86/common/xf86Xinput.c
|
||||||
|
hw/xfree86/common/xf86Xinput.h
|
||||||
|
include/input.h
|
||||||
|
configure.ac
|
||||||
|
include/dix-config.h.in
|
||||||
|
|
|
@ -421,6 +421,7 @@ AC_ARG_ENABLE(builtin-fonts, AS_HELP_STRING([--enable-builtin-fonts], [Use only
|
||||||
AC_ARG_ENABLE(null-root-cursor, AS_HELP_STRING([--enable-null-root-cursor], [Use an empty root cursor (default: use core cursor)]),
|
AC_ARG_ENABLE(null-root-cursor, AS_HELP_STRING([--enable-null-root-cursor], [Use an empty root cursor (default: use core cursor)]),
|
||||||
[NULL_ROOT_CURSOR=$enableval],
|
[NULL_ROOT_CURSOR=$enableval],
|
||||||
[NULL_ROOT_CURSOR=no])
|
[NULL_ROOT_CURSOR=no])
|
||||||
|
AC_ARG_ENABLE(mpx, AS_HELP_STRING([--disable-mpx], [Disable MPX multipointer support (Default: enabled)]), [MPX=$enableval], [MPX=yes])
|
||||||
|
|
||||||
dnl Extensions.
|
dnl Extensions.
|
||||||
AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
|
AC_ARG_ENABLE(composite, AS_HELP_STRING([--disable-composite], [Build Composite extension (default: enabled)]), [COMPOSITE=$enableval], [COMPOSITE=yes])
|
||||||
|
@ -783,6 +784,14 @@ AC_DEFINE(XINPUT, 1, [Support X Input extension])
|
||||||
XI_LIB='$(top_builddir)/Xi/libXi.la'
|
XI_LIB='$(top_builddir)/Xi/libXi.la'
|
||||||
XI_INC='-I$(top_srcdir)/Xi'
|
XI_INC='-I$(top_srcdir)/Xi'
|
||||||
|
|
||||||
|
dnl Enable MPX multipointer extension
|
||||||
|
AC_MSG_CHECKING([whether to use MPX extension])
|
||||||
|
AC_MSG_RESULT([$MPX])
|
||||||
|
AM_CONDITIONAL(MPX, [test "x$MPX" = xyes])
|
||||||
|
|
||||||
|
if test "x$MPX" = xyes; then
|
||||||
|
AC_DEFINE(MPX, 1, [Support MPX multipointer extension])
|
||||||
|
fi
|
||||||
AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
|
AM_CONDITIONAL(XF86UTILS, test "x$XF86UTILS" = xyes)
|
||||||
|
|
||||||
AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
|
AC_DEFINE(SHAPE, 1, [Support SHAPE extension])
|
||||||
|
|
|
@ -21,6 +21,15 @@
|
||||||
*
|
*
|
||||||
* Author: Daniel Stone <daniel@fooishbar.org>
|
* Author: Daniel Stone <daniel@fooishbar.org>
|
||||||
*/
|
*/
|
||||||
|
#ifdef MPX
|
||||||
|
/*
|
||||||
|
* MPX additions:
|
||||||
|
* Copyright © 2006 Peter Hutterer
|
||||||
|
* License see above.
|
||||||
|
* Author: Peter Hutterer <peter@cs.unisa.edu.au>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
#ifdef HAVE_DIX_CONFIG_H
|
||||||
#include <dix-config.h>
|
#include <dix-config.h>
|
||||||
|
@ -480,6 +489,11 @@ GetKeyboardValuatorEvents(xEvent *events, DeviceIntPtr pDev, int type,
|
||||||
* The DDX is responsible for allocating the event structure in the first
|
* The DDX is responsible for allocating the event structure in the first
|
||||||
* place via GetMaximumEventsNum(), and for freeing it.
|
* place via GetMaximumEventsNum(), and for freeing it.
|
||||||
*/
|
*/
|
||||||
|
#ifdef MPX
|
||||||
|
/* In MPX, flags can be set to POINTER_MULTIPOINTER to indicate that the
|
||||||
|
* device is a multipointer device. MP devices always send core events.
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
_X_EXPORT int
|
_X_EXPORT int
|
||||||
GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
int flags, int first_valuator, int num_valuators,
|
int flags, int first_valuator, int num_valuators,
|
||||||
|
@ -525,6 +539,11 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
kbp->time = ms;
|
kbp->time = ms;
|
||||||
kbp->deviceid = pDev->id;
|
kbp->deviceid = pDev->id;
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
if (flags & POINTER_MULTIPOINTER)
|
||||||
|
pointer = pDev;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
if (pDev->coreEvents)
|
if (pDev->coreEvents)
|
||||||
pointer = inputInfo.pointer;
|
pointer = inputInfo.pointer;
|
||||||
else
|
else
|
||||||
|
@ -581,6 +600,12 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
|
|
||||||
updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators);
|
updateMotionHistory(pDev, ms, first_valuator, num_valuators, valuators);
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
if (flags & POINTER_MULTIPOINTER)
|
||||||
|
{
|
||||||
|
// noop, just to fit MPX in easier with the following if
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
if (pDev->coreEvents) {
|
if (pDev->coreEvents) {
|
||||||
/* set the virtual core pointer's coordinates */
|
/* set the virtual core pointer's coordinates */
|
||||||
pointer->valuator->lastx = x;
|
pointer->valuator->lastx = x;
|
||||||
|
|
|
@ -47,6 +47,17 @@
|
||||||
*/
|
*/
|
||||||
/* $XConsortium: xf86Xinput.c /main/14 1996/10/27 11:05:25 kaleb $ */
|
/* $XConsortium: xf86Xinput.c /main/14 1996/10/27 11:05:25 kaleb $ */
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
/*
|
||||||
|
* MPX additions:
|
||||||
|
* Copyright © 2006 Peter Hutterer
|
||||||
|
* License see above.
|
||||||
|
* Author: Peter Hutterer <peter@cs.unisa.edu.au>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAVE_XORG_CONFIG_H
|
#ifdef HAVE_XORG_CONFIG_H
|
||||||
#include <xorg-config.h>
|
#include <xorg-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -133,6 +144,13 @@ xf86ProcessCommonOptions(LocalDevicePtr local,
|
||||||
xf86Msg(X_CONFIG, "%s: always reports core events\n", local->name);
|
xf86Msg(X_CONFIG, "%s: always reports core events\n", local->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
if (xf86SetBoolOption(list, "IsMPDevice", 0)) {
|
||||||
|
local->flags |= XI86_MP_DEVICE;
|
||||||
|
xf86Msg(X_CONFIG, "%s: is MP device\n", local->name);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (xf86SetBoolOption(list, "SendDragEvents", 1)) {
|
if (xf86SetBoolOption(list, "SendDragEvents", 1)) {
|
||||||
local->flags |= XI86_SEND_DRAG_EVENTS;
|
local->flags |= XI86_SEND_DRAG_EVENTS;
|
||||||
} else {
|
} else {
|
||||||
|
@ -196,6 +214,9 @@ xf86ActivateDevice(LocalDevicePtr local)
|
||||||
xf86XinputFinalizeInit(dev);
|
xf86XinputFinalizeInit(dev);
|
||||||
|
|
||||||
dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
|
dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
|
||||||
|
#ifdef MPX
|
||||||
|
dev->coreEvents |= local->flags & XI86_MP_DEVICE;
|
||||||
|
#endif
|
||||||
RegisterOtherDevice(dev);
|
RegisterOtherDevice(dev);
|
||||||
|
|
||||||
if (serverGeneration == 1)
|
if (serverGeneration == 1)
|
||||||
|
@ -441,6 +462,11 @@ xf86PostMotionEvent(DeviceIntPtr device,
|
||||||
flags = POINTER_ABSOLUTE;
|
flags = POINTER_ABSOLUTE;
|
||||||
else
|
else
|
||||||
flags = POINTER_RELATIVE | POINTER_ACCELERATE;
|
flags = POINTER_RELATIVE | POINTER_ACCELERATE;
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
if (device->coreEvents & XI86_MP_DEVICE)
|
||||||
|
flags |= POINTER_MULTIPOINTER;
|
||||||
|
#endif
|
||||||
|
|
||||||
valuators = xcalloc(sizeof(int), num_valuators);
|
valuators = xcalloc(sizeof(int), num_valuators);
|
||||||
|
|
||||||
|
@ -507,6 +533,17 @@ xf86PostButtonEvent(DeviceIntPtr device,
|
||||||
va_list var;
|
va_list var;
|
||||||
int *valuators = NULL;
|
int *valuators = NULL;
|
||||||
int i = 0, nevents = 0;
|
int i = 0, nevents = 0;
|
||||||
|
int flags = 0;
|
||||||
|
|
||||||
|
if (is_absolute)
|
||||||
|
flags = POINTER_ABSOLUTE;
|
||||||
|
else
|
||||||
|
flags = POINTER_RELATIVE;
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
if (device->coreEvents & XI86_MP_DEVICE)
|
||||||
|
flags |= POINTER_MULTIPOINTER;
|
||||||
|
#endif
|
||||||
|
|
||||||
valuators = xcalloc(sizeof(int), num_valuators);
|
valuators = xcalloc(sizeof(int), num_valuators);
|
||||||
|
|
||||||
|
@ -522,8 +559,7 @@ xf86PostButtonEvent(DeviceIntPtr device,
|
||||||
|
|
||||||
nevents = GetPointerEvents(xf86Events, device,
|
nevents = GetPointerEvents(xf86Events, device,
|
||||||
is_down ? ButtonPress : ButtonRelease, button,
|
is_down ? ButtonPress : ButtonRelease, button,
|
||||||
is_absolute ? POINTER_ABSOLUTE :
|
flags,
|
||||||
POINTER_RELATIVE,
|
|
||||||
first_valuator, num_valuators, valuators);
|
first_valuator, num_valuators, valuators);
|
||||||
|
|
||||||
for (i = 0; i < nevents; i++)
|
for (i = 0; i < nevents; i++)
|
||||||
|
|
|
@ -83,6 +83,10 @@
|
||||||
#define XI86_POINTER_CAPABLE 0x40 /* capable of being a core pointer */
|
#define XI86_POINTER_CAPABLE 0x40 /* capable of being a core pointer */
|
||||||
#define XI86_KEYBOARD_CAPABLE 0x80 /* capable of being a core keyboard */
|
#define XI86_KEYBOARD_CAPABLE 0x80 /* capable of being a core keyboard */
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
#define XI86_MP_DEVICE 0x100 /* device is multipointer device */
|
||||||
|
#endif
|
||||||
|
|
||||||
#define XI_PRIVATE(dev) \
|
#define XI_PRIVATE(dev) \
|
||||||
(((LocalDevicePtr)((dev)->public.devicePrivate))->private)
|
(((LocalDevicePtr)((dev)->public.devicePrivate))->private)
|
||||||
|
|
||||||
|
|
|
@ -347,6 +347,9 @@
|
||||||
/* Support X Input extension */
|
/* Support X Input extension */
|
||||||
#undef XINPUT
|
#undef XINPUT
|
||||||
|
|
||||||
|
/* Support MPX multipointer extension */
|
||||||
|
#undef MPX
|
||||||
|
|
||||||
/* Build XKB */
|
/* Build XKB */
|
||||||
#undef XKB
|
#undef XKB
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,9 @@ SOFTWARE.
|
||||||
#define POINTER_RELATIVE (1 << 1)
|
#define POINTER_RELATIVE (1 << 1)
|
||||||
#define POINTER_ABSOLUTE (1 << 2)
|
#define POINTER_ABSOLUTE (1 << 2)
|
||||||
#define POINTER_ACCELERATE (1 << 3)
|
#define POINTER_ACCELERATE (1 << 3)
|
||||||
|
#ifdef MPX
|
||||||
|
#define POINTER_MULTIPOINTER (1 << 4)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MAP_LENGTH 256
|
#define MAP_LENGTH 256
|
||||||
#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
|
#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
|
||||||
|
|
Loading…
Reference in New Issue