dix: Allocate device privates separate from devices
This will allow device privates to be resized. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
		
							parent
							
								
									f38b2b6283
								
							
						
					
					
						commit
						493ad83323
					
				| 
						 | 
				
			
			@ -246,13 +246,17 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
 | 
			
		|||
 | 
			
		||||
    if (devid >= MAXDEVICES)
 | 
			
		||||
        return (DeviceIntPtr) NULL;
 | 
			
		||||
    dev =
 | 
			
		||||
        _dixAllocateObjectWithPrivates(sizeof(DeviceIntRec) +
 | 
			
		||||
                                       sizeof(SpriteInfoRec),
 | 
			
		||||
    dev = calloc(1,
 | 
			
		||||
                 sizeof(DeviceIntRec) +
 | 
			
		||||
                                       sizeof(SpriteInfoRec),
 | 
			
		||||
                                       offsetof(DeviceIntRec, devPrivates),
 | 
			
		||||
                                       PRIVATE_DEVICE);
 | 
			
		||||
                 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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue