From b55e1239ac3b2962a33d8af1f911cc0f01f40f23 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 20 Dec 2006 14:43:38 +1030 Subject: [PATCH] xfree86: fix xf86ActivateDevice(): only set to MP device if not a keyboard --- Changelog | 9 +++++++++ Xi/extinit.c | 15 +++++++++++++++ hw/xfree86/common/xf86Xinput.c | 3 ++- include/extinit.h | 4 ++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Changelog b/Changelog index f69846509..01bc1e8b1 100644 --- a/Changelog +++ b/Changelog @@ -21,6 +21,15 @@ Files: Note: This commit requires libXi additions to use the new functions. +____________________________________________________________ + +xfree86: fix xf86ActivateDevice(): only set to MP device if not a keyboard + +Files: + hw/xfree86/common/xf86Xinput.c + include/extinit.h + Xi/extinit.c + == 18.12.06 == mi: removing MPX ifdefs global sprite renaming in mipointer and misprite diff --git a/Xi/extinit.c b/Xi/extinit.c index 161995883..7c737a143 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -866,6 +866,21 @@ AssignTypeAndName(DeviceIntPtr dev, Atom type, char *name) strcpy(dev->name, name); } +/*********************************************************************** + * + * Returns true if a device may require a pointer (is not a keyboard). + * + */ +_X_EXPORT Bool +MayNeedPointer(DeviceIntPtr dev) +{ + /* return false if device is a keyboard */ + if (dev_type[0].type == dev->type) + return FALSE; + + return TRUE; +} + /*********************************************************************** * * Make device type atoms. diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c index 6f1ebf768..bf97112b4 100644 --- a/hw/xfree86/common/xf86Xinput.c +++ b/hw/xfree86/common/xf86Xinput.c @@ -171,7 +171,8 @@ xf86ActivateDevice(LocalDevicePtr local) local->dev = dev; dev->coreEvents = local->flags & XI86_ALWAYS_CORE; - dev->isMPDev = !(local->flags & XI86_SHARED_POINTER); + dev->isMPDev = + MayNeedPointer(dev) && !(local->flags & XI86_SHARED_POINTER); InitSprite(dev, dev->isMPDev); RegisterOtherDevice(dev); diff --git a/include/extinit.h b/include/extinit.h index 2087d74d6..5546b210f 100644 --- a/include/extinit.h +++ b/include/extinit.h @@ -131,6 +131,10 @@ AssignTypeAndName ( char * /* name */ ); +Bool MayNeedPointer( + DeviceIntPtr /* dev */ + ); + void MakeDeviceTypeAtoms ( void