[X2Go-Commits] [nx-libs] 118/219: rework xkb device private handling

git-admin at x2go.org git-admin at x2go.org
Sat Sep 28 12:10:34 CEST 2019


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch 3.6.x
in repository nx-libs.

commit 3aabc92cf81f20b89dc49e8db3c56ad9fa08481b
Author: Ulrich Sibiller <uli42 at gmx.de>
Date:   Sat Jun 22 16:03:06 2019 +0200

    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).
---
 nx-X11/programs/Xserver/dix/devices.c         |  9 +++++++++
 nx-X11/programs/Xserver/hw/nxagent/Keyboard.c |  8 --------
 nx-X11/programs/Xserver/hw/nxagent/Pointer.c  |  8 --------
 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 */,

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list