diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2019-06-23 21:39:51 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2019-06-23 21:39:51 +0200 |
commit | 4a440feaf5c4ff7ac8d944a7a9832444fca924d3 (patch) | |
tree | 4356a989e631c00f23dd12bce627b04c6e1172a9 /nx-X11 | |
parent | abf3741362f4c200945db6403fcd54df6754d4af (diff) | |
parent | 3aabc92cf81f20b89dc49e8db3c56ad9fa08481b (diff) | |
download | nx-libs-4a440feaf5c4ff7ac8d944a7a9832444fca924d3.tar.gz nx-libs-4a440feaf5c4ff7ac8d944a7a9832444fca924d3.tar.bz2 nx-libs-4a440feaf5c4ff7ac8d944a7a9832444fca924d3.zip |
Merge branch 'uli42-pr/fix_xkb_privates' into 3.6.x
Attributes GH PR #818: https://github.com/ArcticaProject/nx-libs/pull/818
Diffstat (limited to 'nx-X11')
-rw-r--r-- | nx-X11/programs/Xserver/dix/devices.c | 9 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 8 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Pointer.c | 8 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/xkb/xkbActions.c | 14 |
4 files changed, 23 insertions, 16 deletions
diff --git a/nx-X11/programs/Xserver/dix/devices.c b/nx-X11/programs/Xserver/dix/devices.c index 8ad1cc371..3dee81a25 100644 --- a/nx-X11/programs/Xserver/dix/devices.c +++ b/nx-X11/programs/Xserver/dix/devices.c @@ -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); } diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 4952c0197..6fbc66481 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -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; } diff --git a/nx-X11/programs/Xserver/hw/nxagent/Pointer.c b/nx-X11/programs/Xserver/hw/nxagent/Pointer.c index 85d286b96..d344f34b0 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Pointer.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Pointer.c @@ -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; } diff --git a/nx-X11/programs/Xserver/xkb/xkbActions.c b/nx-X11/programs/Xserver/xkb/xkbActions.c index 90bad93e0..a39e5c8f2 100644 --- a/nx-X11/programs/Xserver/xkb/xkbActions.c +++ b/nx-X11/programs/Xserver/xkb/xkbActions.c @@ -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 */, |