mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2025-12-20 08:10:03 +01:00
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>
(cherry picked from commit 8a88b0ab52)
This commit is contained in:
parent
bf115aa906
commit
8cc6867352
2 changed files with 3 additions and 2 deletions
|
|
@ -1366,7 +1366,7 @@ InitValuatorClassDeviceStruct(DeviceIntPtr dev, int numAxes, Atom *labels,
|
||||||
valc->numMotionEvents = numMotionEvents;
|
valc->numMotionEvents = numMotionEvents;
|
||||||
valc->motionHintWindow = NullWindow;
|
valc->motionHintWindow = NullWindow;
|
||||||
|
|
||||||
if (mode & OutOfProximity)
|
if ((mode & OutOfProximity) && !dev->proximity)
|
||||||
InitProximityClassDeviceStruct(dev);
|
InitProximityClassDeviceStruct(dev);
|
||||||
|
|
||||||
dev->valuator = valc;
|
dev->valuator = valc;
|
||||||
|
|
|
||||||
|
|
@ -574,7 +574,8 @@ InitKeyboardDeviceStruct(DeviceIntPtr dev, XkbRMLVOSet * rmlvo,
|
||||||
XkbUpdateActions(dev, xkb->min_key_code, XkbNumKeys(xkb), &changes,
|
XkbUpdateActions(dev, xkb->min_key_code, XkbNumKeys(xkb), &changes,
|
||||||
&check, &cause);
|
&check, &cause);
|
||||||
|
|
||||||
InitFocusClassDeviceStruct(dev);
|
if (!dev->focus)
|
||||||
|
InitFocusClassDeviceStruct(dev);
|
||||||
|
|
||||||
xkbi->kbdProc = ctrl_func;
|
xkbi->kbdProc = ctrl_func;
|
||||||
dev->kbdfeed->BellProc = bell_func;
|
dev->kbdfeed->BellProc = bell_func;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue