summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2010-06-07 14:23:47 -0700
committerKeith Packard <keithp@keithp.com>2010-06-07 19:56:47 -0700
commit8e97e5f9425639ad0a084150d0b232cad417595d (patch)
treed644dd9e88086a860e892a2652bdefc1f58dc7bc
parentfdb081b430ddffb495aa5b05bcc4cf10882ff4b2 (diff)
If XTest is always required, then eliminate the XTest devPrivate
The internals of XTest are used by Xi and Xkb, and both Xi and Xkb are always required, so it makes little sense to have XTest place data in a devPrivate, especially a devPrivate which is only available when the XTest extension is enabled. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--Xext/xtest.c33
-rw-r--r--include/input.h1
-rw-r--r--include/inputstr.h3
-rw-r--r--test/xi2/protocol-common.c1
-rw-r--r--test/xtest.c1
5 files changed, 9 insertions, 30 deletions
diff --git a/Xext/xtest.c b/Xext/xtest.c
index 6ee8430e8..2c733d8a7 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -62,10 +62,6 @@ extern int DeviceValuator;
* other's memory */
static EventListPtr xtest_evlist;
-/* Used to store if a device is an XTest Virtual device */
-static DevPrivateKeyRec XTestDevicePrivateKeyRec;
-#define XTestDevicePrivateKey (&XTestDevicePrivateKeyRec)
-
/**
* xtestpointer
* is the virtual pointer for XTest. It is the first slave
@@ -99,18 +95,9 @@ static DISPATCH_PROC(SProcXTestFakeInput);
static DISPATCH_PROC(SProcXTestGetVersion);
static DISPATCH_PROC(SProcXTestGrabControl);
-Bool
-XTestInitPrivates(void)
-{
- return dixRegisterPrivateKey(&XTestDevicePrivateKeyRec, PRIVATE_DEVICE, 0);
-}
-
void
XTestExtensionInit(INITARGS)
{
- if (!XTestInitPrivates())
- return;
-
AddExtension(XTestExtensionName, 0, 0,
ProcXTestDispatch, SProcXTestDispatch,
NULL, StandardMinorOpcode);
@@ -654,8 +641,8 @@ int AllocXTestDevice (ClientPtr client, char* name,
retval = AllocDevicePair( client, xtestname, ptr, keybd, CorePointerProc, CoreKeyboardProc, FALSE);
if ( retval == Success ){
- dixSetPrivate(&((*ptr)->devPrivates), XTestDevicePrivateKey, (void *)(intptr_t)master_ptr->id);
- dixSetPrivate(&((*keybd)->devPrivates), XTestDevicePrivateKey, (void *)(intptr_t)master_keybd->id);
+ (*ptr)->xtest_master_id = master_ptr->id;
+ (*keybd)->xtest_master_id = master_keybd->id;
XIChangeDeviceProperty(*ptr, XIGetKnownProperty(XI_PROP_XTEST_DEVICE),
XA_INTEGER, 8, PropModeReplace, 1, &dummy,
@@ -683,23 +670,15 @@ int AllocXTestDevice (ClientPtr client, char* name,
BOOL
IsXTestDevice(DeviceIntPtr dev, DeviceIntPtr master)
{
- int is_XTest = FALSE;
- int mid;
- void *tmp; /* shut up, gcc! */
-
if (IsMaster(dev))
- return is_XTest;
-
- tmp = dixLookupPrivate(&dev->devPrivates, XTestDevicePrivateKey);
- mid = (intptr_t)tmp;
+ return FALSE;
/* deviceid 0 is reserved for XIAllDevices, non-zero mid means XTest
* device */
- if ((!master && mid) ||
- (master && mid == master->id))
- is_XTest = TRUE;
+ if (master)
+ return dev->xtest_master_id == master->id;
- return is_XTest;
+ return dev->xtest_master_id != 0;
}
/**
diff --git a/include/input.h b/include/input.h
index 3b29855f1..c68a28441 100644
--- a/include/input.h
+++ b/include/input.h
@@ -237,7 +237,6 @@ extern int key_is_down(DeviceIntPtr pDev, int key_code, int type);
extern void InitCoreDevices(void);
extern void InitXTestDevices(void);
-extern Bool XTestInitPrivates(void);
extern _X_EXPORT DeviceIntPtr AddInputDevice(
ClientPtr /*client*/,
diff --git a/include/inputstr.h b/include/inputstr.h
index a83e863be..1b504e939 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -554,6 +554,9 @@ typedef struct _DeviceIntRec {
/* coordinate transformation matrix for absolute input devices */
struct pixman_f_transform transform;
+
+ /* XTest related master device id */
+ int xtest_master_id;
} DeviceIntRec;
typedef struct {
diff --git a/test/xi2/protocol-common.c b/test/xi2/protocol-common.c
index ad18042f9..50f2b8698 100644
--- a/test/xi2/protocol-common.c
+++ b/test/xi2/protocol-common.c
@@ -157,7 +157,6 @@ void init_simple(void)
dixResetPrivates();
InitAtoms();
XkbInitPrivates();
- XTestInitPrivates();
dixRegisterPrivateKey(&XIClientPrivateKeyRec, PRIVATE_CLIENT, sizeof(XIClientRec));
dixRegisterPrivateKey(&miPointerScreenKeyRec, PRIVATE_SCREEN, 0);
dixRegisterPrivateKey(&miPointerPrivKeyRec, PRIVATE_DEVICE, 0);
diff --git a/test/xtest.c b/test/xtest.c
index af75f0c90..6ea6862f7 100644
--- a/test/xtest.c
+++ b/test/xtest.c
@@ -61,7 +61,6 @@ static void xtest_init_devices(void)
InitAtoms();
XkbInitPrivates();
- XTestInitPrivates();
/* this also inits the xtest devices */
InitCoreDevices();