dix: don't overwrite proximity/focus classes
InitPointerClassDeviceStruct/InitKeyboardDeviceStruct allocate a proximity/focus class, respectively. If a driver calls InitFocusClassDeviceStruct or InitProximityClassDeviceStruct beforehand, the previously allocated class is overwritten, leaking the memory. Neither takes a parameter other than the device, so we can simply skip initialising it if we already have one. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
		
							parent
							
								
									34b0d07ebf
								
							
						
					
					
						commit
						8a88b0ab52
					
				|  | @ -1367,7 +1367,7 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels, | |||
|     valc->numMotionEvents = numMotionEvents; | ||||
|     valc->motionHintWindow = NullWindow; | ||||
| 
 | ||||
|     if (mode & OutOfProximity) | ||||
|     if ((mode & OutOfProximity) && !dev->proximity) | ||||
|         InitProximityClassDeviceStruct(dev); | ||||
| 
 | ||||
|     dev->valuator = valc; | ||||
|  |  | |||
|  | @ -589,7 +589,8 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo, | |||
|     XkbUpdateActions(dev, xkb->min_key_code, XkbNumKeys(xkb), &changes, | ||||
|                      &check, &cause); | ||||
| 
 | ||||
|     InitFocusClassDeviceStruct(dev); | ||||
|     if (!dev->focus) | ||||
|         InitFocusClassDeviceStruct(dev); | ||||
| 
 | ||||
|     xkbi->kbdProc = ctrl_func; | ||||
|     dev->kbdfeed->BellProc = bell_func; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue