Xi: expose Enable/DisableDevice through XI_PROP_ENABLED property.

This commit is contained in:
Peter Hutterer 2008-07-13 18:40:53 +09:30
commit 5bcc45e07e
5 changed files with 93 additions and 0 deletions

View file

@ -123,6 +123,7 @@ SOFTWARE.
#include "warpdevp.h"
#include "xiselev.h"
#include "xiproperty.c"
#include "xiproperty.h"
static Mask lastExtEventMask = 1;
@ -1140,6 +1141,7 @@ XInputExtensionInit(void)
IEventBase = extEntry->eventBase;
AllExtensionVersions[IReqCode - 128] = thisversion;
MakeDeviceTypeAtoms();
XIInitKnownProperties();
RT_INPUTCLIENT = CreateNewResourceType((DeleteType) InputClientGone);
RegisterResourceName(RT_INPUTCLIENT, "INPUTCLIENT");
FixExtensionEvents(extEntry);

View file

@ -39,8 +39,54 @@
#include "xiproperty.h"
/**
* Properties used or alloced from inside the server.
*/
static struct dev_properties
{
Atom type;
char *name;
} dev_properties[] = {
{0, XI_PROP_ENABLED}
};
static long XIPropHandlerID = 1;
/**
* Return the type assigned to the specified atom or 0 if the atom isn't known
* to the DIX.
*/
_X_EXPORT Atom
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)
return dev_properties[i].type;
}
return 0;
}
/**
* 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.

View file

@ -40,4 +40,6 @@ int SProcXChangeDeviceProperty (ClientPtr client);
int SProcXDeleteDeviceProperty (ClientPtr client);
int SProcXGetDeviceProperty (ClientPtr client);
void XIInitKnownProperties(void);
#endif /* XIPROPERTY_C */