Commit 493ad833 authored by Keith Packard's avatar Keith Packard

dix: Allocate device privates separate from devices

This will allow device privates to be resized.
Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
parent f38b2b62
......@@ -246,13 +246,17 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
if (devid >= MAXDEVICES)
return (DeviceIntPtr) NULL;
dev =
_dixAllocateObjectWithPrivates(sizeof(DeviceIntRec) +
sizeof(SpriteInfoRec),
sizeof(DeviceIntRec) +
sizeof(SpriteInfoRec),
offsetof(DeviceIntRec, devPrivates),
PRIVATE_DEVICE);
dev = calloc(1,
sizeof(DeviceIntRec) +
sizeof(SpriteInfoRec));
if (!dev)
return (DeviceIntPtr) NULL;
if (!dixAllocatePrivates(&dev->devPrivates, PRIVATE_DEVICE)) {
free(dev);
return NULL;
}
if (!dev)
return (DeviceIntPtr) NULL;
......@@ -282,6 +286,7 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
/* security creation/labeling check
*/
if (XaceHook(XACE_DEVICE_ACCESS, client, dev, DixCreateAccess)) {
dixFreePrivates(dev->devPrivates, PRIVATE_DEVICE);
free(dev);
return NULL;
}
......@@ -961,7 +966,8 @@ CloseDevice(DeviceIntPtr dev)
free(dev->last.touches[j].valuators);
free(dev->last.touches);
dev->config_info = NULL;
dixFreeObjectWithPrivates(dev, PRIVATE_DEVICE);
dixFreePrivates(dev->devPrivates, PRIVATE_DEVICE);
free(dev);
}
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment