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
Block a user