summaryrefslogtreecommitdiff
path: root/Xi
diff options
context:
space:
mode:
authorSimon Thum <simon.thum@gmx.de>2009-01-23 12:06:16 +0100
committerPeter Hutterer <peter.hutterer@who-t.net>2009-02-03 08:51:11 +1000
commit6bf6a4c47e94780bf0eef47702f21a505c336556 (patch)
tree3fb072340591ef4fd9fa46f9be719af109e50e72 /Xi
parent32adf8d34fb7db9b78859241f2670349b75c3f7e (diff)
Xi: create well-known atoms on demand, rather than preinit them
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'Xi')
-rw-r--r--Xi/extinit.c1
-rw-r--r--Xi/xiproperty.c30
-rw-r--r--Xi/xiproperty.h2
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 */