Commit 3aabc92c authored by Ulrich Sibiller's avatar Ulrich Sibiller

rework xkb device private handling

We can only free the xkbDevicePrivate because we do not know the details of any other (possible) extension. So let's limit to that one private for now and call the new xkbFreePrivates from dix (where such a function is completely missing).
parent abf37413
......@@ -73,6 +73,8 @@ SOFTWARE.
#include "swaprep.h"
#include "dixevents.h"
extern void XkbFreePrivates(DeviceIntPtr device);
DeviceIntPtr
AddInputDevice(DeviceProc deviceProc, Bool autoStart)
{
......@@ -275,6 +277,13 @@ CloseDevice(register DeviceIntPtr dev)
#endif
free(l);
}
#ifdef XKB
XkbFreePrivates(dev);
#endif
free(dev->devPrivates);
free(dev->sync.event);
free(dev);
}
......
......@@ -1034,14 +1034,6 @@ Reply Total Cached Bits In Bits Out Bits/Reply Ratio
fprintf(stderr, "nxagentKeyboardProc: Called for [DEVICE_CLOSE].\n");
#endif
for (int i = 0; i < pDev->nPrivates; i++)
{
free(pDev->devPrivates[i].ptr);
pDev->devPrivates[i].ptr = NULL;
}
free(pDev->devPrivates);
pDev->devPrivates = NULL;
break;
}
......
......@@ -166,14 +166,6 @@ int nxagentPointerProc(DeviceIntPtr pDev, int onoff)
fprintf(stderr, "nxagentPointerProc: Called for [DEVICE_CLOSE].\n");
#endif
for (int i = 0; i < pDev->nPrivates; i++)
{
free(pDev->devPrivates[i].ptr);
pDev->devPrivates[i].ptr = NULL;
}
free(pDev->devPrivates);
pDev->devPrivates = NULL;
break;
}
......
......@@ -81,6 +81,20 @@ XkbSetExtension(DeviceIntPtr device, ProcessInputProc proc)
proc,xkbUnwrapProc);
}
void
XkbFreePrivates(DeviceIntPtr device)
{
if (device &&
device->devPrivates &&
device->nPrivates > 0 &&
xkbDevicePrivateIndex != -1 &&
xkbDevicePrivateIndex < device->nPrivates)
{
free(device->devPrivates[xkbDevicePrivateIndex].ptr);
device->devPrivates[xkbDevicePrivateIndex].ptr = NULL;
}
}
#ifdef XINPUT
extern void ProcessOtherEvent(
xEvent * /* xE */,
......
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