From 6bf6a4c47e94780bf0eef47702f21a505c336556 Mon Sep 17 00:00:00 2001 From: Simon Thum Date: Fri, 23 Jan 2009 12:06:16 +0100 Subject: [PATCH] Xi: create well-known atoms on demand, rather than preinit them Signed-off-by: Peter Hutterer --- Xi/extinit.c | 1 - Xi/xiproperty.c | 30 ++++++++++-------------------- Xi/xiproperty.h | 2 -- 3 files changed, 10 insertions(+), 23 deletions(-) diff --git a/Xi/extinit.c b/Xi/extinit.c index 62ec95897..a7a21ece8 100644 --- a/Xi/extinit.c +++ b/Xi/extinit.c @@ -1143,7 +1143,6 @@ XInputExtensionInit(void) IEventBase = extEntry->eventBase; AllExtensionVersions[IReqCode - 128] = thisversion; MakeDeviceTypeAtoms(); - XIInitKnownProperties(); RT_INPUTCLIENT = CreateNewResourceType((DeleteType) InputClientGone); RegisterResourceName(RT_INPUTCLIENT, "INPUTCLIENT"); FixExtensionEvents(extEntry); diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c index 3bc2818f0..f42adb8a5 100644 --- a/Xi/xiproperty.c +++ b/Xi/xiproperty.c @@ -97,7 +97,7 @@ static struct dev_properties static long XIPropHandlerID = 1; /** - * Return the type assigned to the specified atom or 0 if the atom isn't known + * Return the atom assigned to the specified string or 0 if the atom isn't known * to the DIX. */ Atom @@ -106,8 +106,16 @@ XIGetKnownProperty(char *name) int i; for (i = 0; i < (sizeof(dev_properties)/sizeof(struct dev_properties)); i++) { - if (strcmp(name, dev_properties[i].name) == 0) + if (strcmp(name, dev_properties[i].name) == 0){ + if (dev_properties[i].type == None){ + dev_properties[i].type = + MakeAtom(dev_properties[i].name, + strlen(dev_properties[i].name), + TRUE); + } + return dev_properties[i].type; + } } return 0; @@ -232,24 +240,6 @@ XIPropToFloat(XIPropertyValuePtr val, int *nelem_return, float **buf_return) return Success; } -/** - * Init those properties that are allocated by the server and most likely used - * by the DIX or the DDX. - */ -void -XIInitKnownProperties(void) -{ - int i; - for (i = 0; i < (sizeof(dev_properties)/sizeof(struct dev_properties)); i++) - { - dev_properties[i].type = - MakeAtom(dev_properties[i].name, - strlen(dev_properties[i].name), - TRUE); - } -} - - /* Registers a new property handler on the given device and returns a unique * identifier for this handler. This identifier is required to unregister the * property handler again. diff --git a/Xi/xiproperty.h b/Xi/xiproperty.h index 12026e9e8..bf562b1aa 100644 --- a/Xi/xiproperty.h +++ b/Xi/xiproperty.h @@ -43,6 +43,4 @@ void SRepXListDeviceProperties(ClientPtr client, int size, void SRepXGetDeviceProperty(ClientPtr client, int size, xGetDevicePropertyReply *rep); -void XIInitKnownProperties(void); - #endif /* XIPROPERTY_C */