[X2go-Commits] nx-libs.git - build-main (branch) updated: redist-server/3.5.0.14

X2Go dev team git-admin at x2go.org
Thu Jun 28 14:54:45 CEST 2012


The branch, build-main has been updated
       via  136375188303a9c8d775fb7555085cfd24e544d4 (commit)
       via  b65b83ba4bbfea8efef58c9f4bab31a1b20db066 (commit)
       via  dd7b5eb3c1c868bd38b8af71ed1236fc03fd4d8c (commit)
       via  e2e7008b3e4f7283b135a9fc2821a64386253ee0 (commit)
       via  fdaa240434e4b5022f2bc6b6aa7f590c0dcdc794 (commit)
       via  222a4a22214608b7f89691eee1c57873c2631705 (commit)
       via  fe72988fb668ad97fc4fcb2ee3862613324d9516 (commit)
      from  789c758510fc661b9d1a297ff5284962c5e944f0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 debian/changelog                                   |   18 ++
 ...09_nxagent_locale-utf8-compound-text.full.patch |   16 +-
 ..._nxcomp_macos10-nxauth-location.full+lite.patch |   38 ++++
 ...agent_libcairo-null-source-drawables.full.patch |  193 --------------------
 ...00_nxagent_check-binary-x2go-flavour.full.patch |    4 +-
 ...t_set-x2go-icon-if-x2goagent-flavour.full.patch |   19 +-
 .../203_nxagent_disable-rootless-exit.full.patch   |   10 +-
 debian/patches/300_nxagent_set-wm-class.full.patch |    2 +-
 ...gent_unbrand-nxagent-brand-x2goagent.full.patch |    4 +-
 debian/patches/series                              |    3 +-
 nx-X11/programs/Xserver/hw/nxagent/Args.c          |   18 ++
 nx-X11/programs/Xserver/hw/nxagent/CHANGELOG       |   19 ++
 nx-X11/programs/Xserver/hw/nxagent/Client.c        |   23 ++-
 nx-X11/programs/Xserver/hw/nxagent/Client.h        |    3 +-
 nx-X11/programs/Xserver/hw/nxagent/Cursor.c        |   17 ++-
 nx-X11/programs/Xserver/hw/nxagent/Cursor.h        |    3 +
 nx-X11/programs/Xserver/hw/nxagent/Display.c       |   31 +++-
 nx-X11/programs/Xserver/hw/nxagent/Display.h       |    2 +
 nx-X11/programs/Xserver/hw/nxagent/Drawable.c      |   33 ++++
 nx-X11/programs/Xserver/hw/nxagent/Handlers.c      |    4 +-
 nx-X11/programs/Xserver/hw/nxagent/Init.c          |   18 ++
 nx-X11/programs/Xserver/hw/nxagent/Options.c       |    4 +
 nx-X11/programs/Xserver/hw/nxagent/Options.h       |   12 ++
 nx-X11/programs/Xserver/hw/nxagent/Pixels.h        |    2 +-
 nx-X11/programs/Xserver/hw/nxagent/Reconnect.c     |    5 +-
 nx-X11/programs/Xserver/hw/nxagent/Render.c        |   20 ++-
 nx-X11/programs/Xserver/hw/nxagent/Screen.c        |    3 +
 27 files changed, 278 insertions(+), 246 deletions(-)
 rename debian/{patches => patches-refused}/109_nxagent_locale-utf8-compound-text.full.patch (93%)
 create mode 100644 debian/patches/052_nxcomp_macos10-nxauth-location.full+lite.patch
 delete mode 100644 debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index a5c0844..d98e982 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,21 @@
+nx-libs (2:3.5.0.14-0) unstable; urgency=low
+
+  [ Mike Gabriel ]
+  * New upstream release of nxagent (3.5.0-9).
+  * Adapt patch series (all hunks succeeded automatically).
+  * Drop patch: 120_nxagent_libcairo-null-source-drawables.full.patch, the issue
+    has been fixed by NoMachine (TR05J02703).
+  * Drop patch: 109_nxagent_locale-utf8-compound-text.patch, the patch causes
+    Qt applications to be rendered without window decorations when running in
+    rootless window mode.
+
+  [ Mihai Moldovan ]
+  * Add patch: 052_nxcomp_macos10-nxauth-location.full+lite.patch, change
+    nxauth search location on Mac OS X to $NX_SYSTEM/nxauth to facilitate
+    application bundle building.
+
+ -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Thu, 28 Jun 2012 14:52:24 +0200
+
 nx-libs (2:3.5.0.13-0) unstable; urgency=low
 
   [ Mike Gabriel ]
diff --git a/debian/patches/109_nxagent_locale-utf8-compound-text.full.patch b/debian/patches-refused/109_nxagent_locale-utf8-compound-text.full.patch
similarity index 93%
rename from debian/patches/109_nxagent_locale-utf8-compound-text.full.patch
rename to debian/patches-refused/109_nxagent_locale-utf8-compound-text.full.patch
index 29abd99..6c11226 100644
--- a/debian/patches/109_nxagent_locale-utf8-compound-text.full.patch
+++ b/debian/patches-refused/109_nxagent_locale-utf8-compound-text.full.patch
@@ -17,7 +17,7 @@ Last-Update: 2011-12-31
  /*
   * Set here the required log level.
   */
-@@ -348,6 +351,20 @@
+@@ -366,6 +369,20 @@
     */
  
    blackRoot = TRUE;
@@ -96,21 +96,23 @@ Last-Update: 2011-12-31
                 #ifndef _XSERVER64
                 strcmp(typeS, "CARDINAL") == 0 ||
                     strcmp(typeS, "WM_SIZE_HINTS") == 0 ||
-@@ -483,6 +511,17 @@
+@@ -483,6 +511,19 @@
      output = value;
      export = True;
    }
-+  /* add by dimbor, modified by Mike Gabriel <mike.gabriel at das-netzwerkteam.de> */
++  /* add by dimbor, modified by Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
 +  else if (strcmp(typeS, "COMPOUND_TEXT") == 0)
 +  {
 +    output = textToUTF8String(value, nUnits);
 +    if ( output != NULL ) {
-+      nUnits = strlen((char *) output);
 +      type = MakeAtom("UTF8_STRING", strlen("UTF8_STRING"), True);
-+      freeMem = True;
-+      export = True;
++    } else {
++      output = value;
 +    }
-+  }
++    nUnits = strlen((char *) output);
++    freeMem = True;
++    export = True;
++  } */
    #ifdef _XSERVER64
    else if (strcmp(typeS, "CARDINAL") == 0 || strcmp(typeS, "WM_SIZE_HINTS") == 0)
    {
diff --git a/debian/patches/052_nxcomp_macos10-nxauth-location.full+lite.patch b/debian/patches/052_nxcomp_macos10-nxauth-location.full+lite.patch
new file mode 100644
index 0000000..4960c9d
--- /dev/null
+++ b/debian/patches/052_nxcomp_macos10-nxauth-location.full+lite.patch
@@ -0,0 +1,38 @@
+--- a/nxcomp/Auth.cpp
++++ b/nxcomp/Auth.cpp
+@@ -217,22 +217,31 @@
+ 
+   //
+   // Use the nxauth command on Windows and the Mac, xauth
+-  // on all the other platforms. On Windows and on the Mac
+-  // we assume that the nxauth command is located under
+-  // bin in the client installation directory. On all the
++  // on all the other platforms. On Windows we assume that
++  // the nxauth command is located under bin in the client
++  // installation directory. On Mac OS X we assume that the
++  // command is located directly in the client installation
++  // directory, to make bundle shipping easier. On all the
+   // other platforms we use the default xauth command that
+   // is in our path.
+   //
+ 
+   char command[DEFAULT_STRING_LIMIT];
+ 
+-  #if defined(__CYGWIN32__) || defined(__APPLE__)
++  #if defined(__CYGWIN32__)
+ 
+   snprintf(command, DEFAULT_STRING_LIMIT - 1,
+                "%s/bin/nxauth", control -> SystemPath);
+ 
+   *(command + DEFAULT_STRING_LIMIT - 1) = '\0';
+ 
++  #elif defined(__APPLE__)
++
++  snprintf(command, DEFAULT_STRING_LIMIT - 1,
++               "%s/nxauth", control -> SystemPath);
++
++  *(command + DEFAULT_STRING_LIMIT - 1) = '\0';
++
+   #else
+ 
+   strcpy(command, "xauth");
diff --git a/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch b/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch
deleted file mode 100644
index 319f6ed..0000000
--- a/debian/patches/120_nxagent_libcairo-null-source-drawables.full.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-Description: Fix nxagent/x2goagent With New LibCairo (>1.12.1)
- Quoting two postings of Jim Burnes <jvburnes at gmail.com> on x2go-dev ML:
-
- I don't know what the current patch status is for fixing nxagent with the
- new libcairo (1.12.1+ I believe), but eventually I got tired of waiting and
- created my own patches for nxagent/x2goagent.
-
- Most of the fixes were required because the render extension now allows
- (and libcairo uses) null source drawables (for gradients etc), null masks
- and null mask drawables.
-
- This change creates a bit of a logic mess in the code.   Previous patches
- to the code tried to account for all of the possibilities, but fell a
- little short.
-
- Consider this an alpha-quality patch.  I've only tested it in KDE while
- running GTK applications.   All my favorite GTK apps like Firefox, Emacs,
- rox-filer and all my other GTK apps that were broken are now working just
- fine.  (Though I'm getting only the standard GTK look and feel - don't know
- if that's caused by anything I've done.)
-
- Could someone test this under Gnome?
-
- Also, since I'm not primarily an X software engineer I'd like a specialist
- to take a look at it.   The fix is a little crude.   I just attached to the
- x2goagent process and fixed the lines that caused segfaults.   (About 10 of
- them).
-
- I also rewrote one of the macros in Pixels.h into a local subroutine in
- Render.c.  It had a bug in it and complex macro bugs are a PITA to debug in
- gdb (or anything else really).   The macro is only used in one place and
- although the code in the macro is called pretty often, it's very likely
- that the compiler would inline it anyway.  The rewrite increases
- readability by a large factor.
-
- A better patch could be created by someone that understands nxagent and X
- much better.   The render extension code receives render ops from X client
- programs.  The render ops can contain any combination of picture source,
- picture destination and picture mask.  It's apparently legal to send render
- ops with combinations of null picture source drawables, picture masks and
- picture mask drawables.   A better way to patch this would be to simply
- perform a return on all the illegal combinations of null parameters for the
- render ops.  That way you wouldn't have to keep re-checking the parameter
- values.
-
- So anyway, here it is.  I appreciate it if someone out there would test it
- and let me know.   Also if anyone knows of the X docs which discuss null
- picture sources and masks in the render extension I'd be glad to create a
- cleaner patch that conforms to the stands.
-
-
- You can reproduce the issue by running any recent copy of x2go/nxagent and
- start any program that uses very recent versions of libCairo.  Things
- started breaking for both ArchLinux and Debian SID users about 3 weeks ago.
-
- The issues started with versions of libCairo >= libcairo2_1.12.0-2_amd64
- (debian packages of course).  These versions of Cairo seem to use null
- parameters in render ops a lot.   Users of recent GTK environments would
- have the startup process just crash.  KDE sessions start and run fine until
- you start a gtk app.
-Forwarded: pending
-Author: Jim Burnes <jvburnes at gmail.com>
-Last-Update: 2012-05-11
---- a/nx-X11/programs/Xserver/hw/nxagent/Render.c
-+++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c
-@@ -995,6 +995,36 @@
-   #endif
- }
- 
-+
-+int nxagentShouldDeferComposite(PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst)
-+{
-+
-+int drawableDst;
-+int linkDeferred;
-+int unSyncedSrcMask;
-+
-+	drawableDst      =  ( nxagentRenderVersionMajor == 0 &&
-+	                      nxagentRenderVersionMinor == 8 &&
-+		              (pDst) -> pDrawable -> type == DRAWABLE_PIXMAP
-+                            );
-+
-+	linkDeferred     =  ( nxagentOption(DeferLevel) >= 2 &&
-+                              nxagentOption(LinkType) < LINK_TYPE_ADSL
-+                            );
-+
-+	unSyncedSrcMask  =  ( nxagentOption(DeferLevel) == 1 &&
-+                              (pDst) -> pDrawable -> type == DRAWABLE_PIXMAP &&
-+                              (
-+			       (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)) ||
-+	                       ((pMask) && pMask -> pDrawable && (nxagentDrawableStatus((pMask) -> pDrawable) == NotSynchronized))
-+			      )
-+			    );
-+
-+
-+	return drawableDst || linkDeferred || unSyncedSrcMask;
-+}
-+
-+
- void nxagentComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pDst,
-                           INT16 xSrc, INT16 ySrc, INT16 xMask, INT16 yMask, INT16 xDst,
-                               INT16 yDst, CARD16 width, CARD16 height)
-@@ -1036,8 +1066,8 @@
-   }
- 
-   #endif
--
--  if (NXAGENT_SHOULD_DEFER_COMPOSITE(pSrc, pMask, pDst))
-+  /* if (NXAGENT_SHOULD_DEFER_COMPOSITE(pSrc, pMask, pDst)) */
-+  if (nxagentShouldDeferComposite(pSrc, pMask, pDst))
-   {
-     pDstRegion = nxagentCreateRegion(pDst -> pDrawable, NULL, xDst, yDst, width, height);
- 
-@@ -1095,7 +1125,8 @@
-     }
-   }
- 
--  if (pMask != NULL && pMask -> pDrawable != pSrc -> pDrawable &&
-+  if ((pMask) && (pMask->pDrawable) &&
-+          pMask -> pDrawable != pSrc -> pDrawable &&
-           pMask -> pDrawable != pDst -> pDrawable)
-   {
-     nxagentSynchronizeShmPixmap(pMask -> pDrawable, xMask, yMask, width, height);
-@@ -1259,7 +1290,7 @@
-    * on the real X server.
-    */
- 
--  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
-+  if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
-   {
-     #ifdef TEST
-     fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p].\n",
-@@ -1302,14 +1333,15 @@
-       nxagentSynchronizeBox(pSrc -> pDrawable, &glyphBox, NEVER_BREAK);
-     }
- 
--    if (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP)
-+    if (pSrc -> pDrawable && (pSrc -> pDrawable -> type == DRAWABLE_PIXMAP))
-     {
-       nxagentIncreasePixmapUsageCounter((PixmapPtr) pSrc -> pDrawable);
-     }
-   }
- 
--  if (pSrc -> pDrawable != pDst -> pDrawable &&
--          nxagentDrawableStatus(pDst -> pDrawable) == NotSynchronized)
-+
-+  if (pSrc -> pDrawable && (pSrc -> pDrawable != pDst -> pDrawable &&
-+          nxagentDrawableStatus(pDst -> pDrawable) == NotSynchronized))
-   {
-     #ifdef TEST
-     fprintf(stderr, "nxagentGlyphs: Synchronizing destination [%s] at [%p].\n",
-@@ -1749,7 +1781,9 @@
-     return;
-   }
- 
--  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
-+  /* the following blocks need fixing to ignore null values of pDrawable */
-+
-+  if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
-   {
-     #ifdef TEST
-     fprintf(stderr, "nxagentTrapezoids: Going to synchronize the source drawable at [%p].\n",
-@@ -1843,7 +1877,9 @@
-    * operation like nxagentTrapezoids() does.
-    */
- 
--  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
-+
-+
-+  if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
-   {
-     #ifdef TEST
-     fprintf(stderr, "nxagentTriangles: Going to synchronize the source drawable at [%p].\n",
-@@ -1920,7 +1956,8 @@
-    * operation like nxagentTrapezoids() does.
-    */
- 
--  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
-+
-+  if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
-   {
-     #ifdef TEST
-     fprintf(stderr, "nxagentTriStrip: Going to synchronize the source drawable at [%p].\n",
-@@ -1997,7 +2034,8 @@
-    * operation like nxagentTrapezoids() does.
-    */
- 
--  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
-+
-+  if (pSrc -> pDrawable && (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized))
-   {
-     #ifdef TEST
-     fprintf(stderr, "nxagentTriFan: Going to synchronize the source drawable at [%p].\n",
diff --git a/debian/patches/200_nxagent_check-binary-x2go-flavour.full.patch b/debian/patches/200_nxagent_check-binary-x2go-flavour.full.patch
index 089b570..635d428 100644
--- a/debian/patches/200_nxagent_check-binary-x2go-flavour.full.patch
+++ b/debian/patches/200_nxagent_check-binary-x2go-flavour.full.patch
@@ -9,7 +9,7 @@ Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
 Last-Update: 2012-01-11
 --- a/nx-X11/programs/Xserver/hw/nxagent/Init.c
 +++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c
-@@ -178,6 +178,29 @@
+@@ -180,6 +180,29 @@
  
  int nxagentDoFullGeneration = 1;
  
@@ -39,7 +39,7 @@ Last-Update: 2012-01-11
  /*
   * Called at X server's initialization.
   */
-@@ -194,6 +217,11 @@
+@@ -196,6 +219,11 @@
    #endif
  
    /*
diff --git a/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch b/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch
index ff3861d..48e4c4a 100644
--- a/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch
+++ b/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch
@@ -4,9 +4,9 @@ Description: X2Go icon when run with x2goagent flavour
 Forwarded: not-needed
 Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
 Last-Update: 2012-01-11
---- a/nx-X11/programs/Xserver/hw/nxagent/Display.c	2012-01-11 10:09:05.000000000 +0100
-+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c	2012-01-11 12:28:11.000000000 +0100
-@@ -77,6 +77,7 @@ is" without express or implied warranty.
+--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c
+@@ -77,6 +77,7 @@
  #include "NXlib.h"
  
  #include NXAGENT_ICON_NAME
@@ -14,7 +14,7 @@ Last-Update: 2012-01-11
  
  /*
   * Set here the required log level.
-@@ -1918,12 +1919,29 @@ Bool nxagentMakeIcon(Display *display, P
+@@ -1941,12 +1942,29 @@
    Bool success = False;
    XlibPixmap IconPixmap;
    XlibPixmap IconShape;
@@ -46,7 +46,7 @@ Last-Update: 2012-01-11
  
      if (icon_fp != NULL)
      {
-@@ -1962,7 +1980,7 @@ Bool nxagentMakeIcon(Display *display, P
+@@ -1985,7 +2003,7 @@
    {
       status = XpmCreatePixmapFromData(display,
                                          DefaultRootWindow(display),
@@ -55,8 +55,8 @@ Last-Update: 2012-01-11
                                          &IconPixmap,
                                          &IconShape,
                                          NULL);
---- a/nx-X11/programs/Xserver/hw/nxagent/Icons.h	2012-01-11 10:09:05.000000000 +0100
-+++ b/nx-X11/programs/Xserver/hw/nxagent/Icons.h	2012-01-11 12:17:21.000000000 +0100
+--- a/nx-X11/programs/Xserver/hw/nxagent/Icons.h
++++ b/nx-X11/programs/Xserver/hw/nxagent/Icons.h
 @@ -24,6 +24,8 @@
  
  #define NXAGENT_ICON_NAME  "nxagent.xpm"
@@ -66,8 +66,8 @@ Last-Update: 2012-01-11
  #define NXAGENT_PLACEHOLDER_NAME  "nxmissing.xpm"
  
  #endif /* __Icons_H__ */
---- a/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm	1970-01-01 01:00:00.000000000 +0100
-+++ b/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm	2012-01-11 12:26:24.000000000 +0100
+--- /dev/null
++++ b/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm
 @@ -0,0 +1,148 @@
 +/* XPM */
 +static char  *x2goagentIconData[]={
@@ -217,4 +217,3 @@ Last-Update: 2012-01-11
 +"..#cccbne.............................................................................................................menkccc#..",
 +"...okccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbe...",
 +"....mhjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccg#....."};
-
diff --git a/debian/patches/203_nxagent_disable-rootless-exit.full.patch b/debian/patches/203_nxagent_disable-rootless-exit.full.patch
index 03154bb..fcdecc0 100644
--- a/debian/patches/203_nxagent_disable-rootless-exit.full.patch
+++ b/debian/patches/203_nxagent_disable-rootless-exit.full.patch
@@ -1,6 +1,6 @@
 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c
 +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c
-@@ -656,6 +656,12 @@
+@@ -672,6 +672,12 @@
      return 1;
    }
  
@@ -13,7 +13,7 @@
    if (!strcmp(argv[i], "-noonce"))
    {
        nxagentOnce = False;
-@@ -1837,6 +1843,7 @@
+@@ -1855,6 +1861,7 @@
    ErrorF("The NX system adds the following arguments:\n");
    ErrorF("-forcenx               force use of NX protocol messages assuming communication through nxproxy\n");
    ErrorF("-timeout int           auto-disconnect timeout in seconds (minimum allowed: 60)\n");
@@ -23,7 +23,7 @@
    ErrorF("-nocomposite           disable the use of the composite extension\n");
 --- a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
 +++ b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
-@@ -217,7 +217,7 @@
+@@ -219,7 +219,7 @@
  
    if (nxagentOption(Rootless) &&
            nxagentLastWindowDestroyed && nxagentRootlessDialogPid == 0 &&
@@ -44,9 +44,9 @@
    nxagentOptions.Y           = 0;
 --- a/nx-X11/programs/Xserver/hw/nxagent/Options.h
 +++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h
-@@ -369,6 +369,13 @@
+@@ -381,6 +381,13 @@
  
-   int CopyBufferSize;
+   int ImageRateLimit;
  
 + /*
 +  * True if agent should not exit if there are no
diff --git a/debian/patches/300_nxagent_set-wm-class.full.patch b/debian/patches/300_nxagent_set-wm-class.full.patch
index 765d6bc..7a67e43 100644
--- a/debian/patches/300_nxagent_set-wm-class.full.patch
+++ b/debian/patches/300_nxagent_set-wm-class.full.patch
@@ -15,7 +15,7 @@ Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
 Last-Update: 2012-01-11
 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
 +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
-@@ -1756,6 +1756,42 @@
+@@ -1759,6 +1759,42 @@
                    nxagentDefaultWindows[pScreen->myNum]);
        #endif
  
diff --git a/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch b/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch
index 7a5ce54..4b18aa5 100644
--- a/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch
+++ b/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.full.patch
@@ -230,7 +230,7 @@ Last-Update: 2012-01-11
    #ifdef NXAGENT_LOGO_DEBUG
 --- a/nx-X11/programs/Xserver/hw/nxagent/Display.c
 +++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c
-@@ -1403,22 +1403,10 @@
+@@ -1430,22 +1430,10 @@
    g = pV.green_mask;
    b = pV.blue_mask;
  
@@ -257,7 +257,7 @@ Last-Update: 2012-01-11
  
    #ifdef WATCH
  
-@@ -2673,22 +2661,10 @@
+@@ -2696,22 +2684,10 @@
    g = pV.green_mask;
    b = pV.blue_mask;
  
diff --git a/debian/patches/series b/debian/patches/series
index 0e7726a..f47979a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -26,6 +26,7 @@
 031_nx-X11_parallel-make.full.patch
 032_no-x11r6.full.patch
 051_nxcomp_macos105-fdisset.full+lite.patch
+052_nxcomp_macos10-nxauth-location.full+lite.patch
 101_nxagent_set-rgb-path.full.patch
 102_xserver-xext_set-securitypolicy-path.full.patch
 103_nxagent_set-X0-config-path.full.patch
@@ -33,9 +34,7 @@
 106_nxagent_utf8-copy-clipboard.full.patch
 107_nxagent_clipboard-compound-text+small-bed-sheets.full.patch
 108_nxagent_wine-close-delay.full.patch
-109_nxagent_locale-utf8-compound-text.full.patch
 110_nxagent_createpixmap-bounds-check.full.patch
-120_nxagent_libcairo-null-source-drawables.full.patch
 200_nxagent_check-binary-x2go-flavour.full.patch
 201_nxagent_set-x2go-icon-if-x2goagent-flavour.full.patch
 202_nx-x11_enable-xinerama.full.patch
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c
index ecf0a21..ecf04e2 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Args.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c
@@ -514,6 +514,22 @@ int ddxProcessArgument(int argc, char *argv[], int i)
     return 0;
   }
 
+  if (!strcmp(argv[i], "-irlimit"))
+  {
+    int limit;
+
+    if (++i < argc &&
+            sscanf(argv[i], "%i", &limit) == 1)
+    {
+      nxagentChangeOption(ImageRateLimit, limit);
+
+  
+      return 2;
+    }
+
+    return 0;
+  }
+
   if (!strcmp(argv[i], "-tile"))
   {
     int width;
@@ -780,6 +796,8 @@ int ddxProcessArgument(int argc, char *argv[], int i)
   {
     nxagentChangeOption(DeviceControl, True);
 
+    nxagentChangeOption(DeviceControlUserDefined , True);
+
     return 1;
   }
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
index 763f066..0a82773 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
+++ b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
@@ -1,5 +1,24 @@
 ChangeLog:
 
+nxagent-3.5.0-9
+
+- Fixed an issue with cursor position set in XTest extension.
+
+nxagent-3.5.0-8
+
+- Fixed TR01J02646. Performance issues with cairo version 1.12.
+
+- Fixed TR01J02667. Changes to mouse sensitivity couldn't be forwarded
+  to NX client host although -noignore was among extra options.
+
+- Fixed TR05J02705. Agent ignore WarpPointer requests.
+
+- Fixed TR05J02706. Suspended sessions could not be recovered using
+  a client form a different version.
+
+- Fixed TR05J02703. Agent failed because of missing checks on source
+  drawables in the render code.
+
 nxagent-3.5.0-7
 
 - Fixed TR10I02622. Corrected function searching for icon file.
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Client.c b/nx-X11/programs/Xserver/hw/nxagent/Client.c
index 63ed0e1..cba4798 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Client.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Client.c
@@ -124,13 +124,24 @@ void nxagentGuessClientHint(ClientPtr client, Atom property, char *data)
 
   if (nxagentClientPriv(client) -> clientHint == UNKNOWN)
   {
-    if (property == XA_WM_CLASS && strcmp(data, "nxclient") == 0)
+    if (property == XA_WM_CLASS)
     {
-      #ifdef TEST
-      fprintf(stderr, "++++++nxagentGuessClientHint: Detected nxclient as [%d].\n", client -> index);
-      #endif
+      if (strcmp(data, "nxclient") == 0)
+      {
+        #ifdef TEST
+        fprintf(stderr, "++++++nxagentGuessClientHint: Detected nxclient as [%d].\n", client -> index);
+        #endif
 
-      nxagentClientHint(client) = NXCLIENT_WINDOW;
+        nxagentClientHint(client) = NXCLIENT_WINDOW;
+      }
+      else if (strstr(data, "java"))
+      {
+        #ifdef TEST
+        fprintf(stderr, "++++++nxagentGuessClientHint: Detected java as [%d].\n", client -> index);
+        #endif
+
+        nxagentClientHint(client) = JAVA_WINDOW;
+      }
     }
   }
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Client.h b/nx-X11/programs/Xserver/hw/nxagent/Client.h
index a9b06c8..67ec50e 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Client.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Client.h
@@ -32,7 +32,8 @@ enum ClientHint
   UNKNOWN = 0,
   NXCLIENT_WINDOW,
   NXCLIENT_DIALOG,
-  NXAGENT_SHADOW
+  NXAGENT_SHADOW,
+  JAVA_WINDOW
 };
 
 typedef struct _PrivClientRec
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Cursor.c b/nx-X11/programs/Xserver/hw/nxagent/Cursor.c
index e27415b..9d48aa1 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Cursor.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Cursor.c
@@ -290,10 +290,25 @@ void nxagentRecolorCursor(ScreenPtr pScreen, CursorPtr pCursor,
                  &fg_color, &bg_color);
 }
 
+Bool (*nxagentSetCursorPositionW)(ScreenPtr pScreen, int x, int y,
+                                      Bool generateEvent);
+
 Bool nxagentSetCursorPosition(ScreenPtr pScreen, int x, int y,
                                   Bool generateEvent)
 {
-  return 1;
+  if (generateEvent != 0)
+  {
+    return (*nxagentSetCursorPositionW)(pScreen, x, y, generateEvent);
+  }
+  else
+  {
+    /*
+     * Calling miSetCursorPosition with generateEvent == 0
+     * causes a crash in miPoiterUpdate().
+     */
+
+    return 1;
+  }
 }
 
 void nxagentReconnectCursor(pointer p0, XID x1, pointer p2)
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Cursor.h b/nx-X11/programs/Xserver/hw/nxagent/Cursor.h
index df7dc44..88dea26 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Cursor.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Cursor.h
@@ -97,6 +97,9 @@ void nxagentRecolorCursor(ScreenPtr pScreen, CursorPtr pCursor,
 Bool nxagentSetCursorPosition(ScreenPtr pScreen, int x, int y,
                                   Bool generateEvent);
 
+extern Bool (*nxagentSetCursorPositionW)(ScreenPtr pScreen, int x, int y,
+                                             Bool generateEvent);
+
 void nxagentDisconnectCursor(pointer p0, XID x1, pointer p2);
 void nxagentReconnectCursor(pointer p0, XID x1, pointer p2);
 void nxagentReDisplayCurrentCursor(void);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Display.c b/nx-X11/programs/Xserver/hw/nxagent/Display.c
index c60718d..9031c25 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c
@@ -746,8 +746,19 @@ static void nxagentDisplayWriteHandler(Display *display, int length)
   }
 }
 
+static CARD32 nxagentRateTime = 5000;
+static CARD32 nxagentLastTime;
+static unsigned int nxagentRate = 0;
+
+int nxagentGetDataRate(void)
+{
+  return nxagentRate;
+}
+
 static void nxagentDisplayFlushHandler(Display *display, int length)
 {
+  CARD32 time;
+
   if (nxagentDisplay != NULL)
   {
     #ifdef TEST
@@ -765,6 +776,22 @@ static void nxagentDisplayFlushHandler(Display *display, int length)
     if (nxagentOption(LinkType) != LINK_TYPE_NONE)
     {
       nxagentFlush = GetTimeInMillis();
+
+      time = nxagentFlush;
+
+      time = time - nxagentLastTime;
+
+      if (time < nxagentRateTime)
+      {
+        nxagentRate = ((nxagentRate * (nxagentRateTime - time) +
+                          length) * 1000) / nxagentRateTime;
+      }
+      else
+      {
+        nxagentRate = (length * 1000) / nxagentRateTime;
+      }
+
+      nxagentLastTime = nxagentFlush;
     }
   }
 }
@@ -1482,10 +1509,6 @@ void nxagentSetDefaultVisual(void)
 
   int i;
 
-  nxagentDefaultVisualIndex = 3;
-
-  return;
-
   if (nxagentUserDefaultClass || nxagentUserDefaultDepth)
   {
     nxagentDefaultVisualIndex = UNDEFINED;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Display.h b/nx-X11/programs/Xserver/hw/nxagent/Display.h
index 454150d..1c12d6c 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Display.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.h
@@ -159,6 +159,8 @@ extern int nxagentShadowXConnectionNumber;
 
 int nxagentServerOrder(void);
 
+int nxagentGetDataRate(void);
+
 #define nxagentClientOrder(client) \
     ((client)->swapped ? !nxagentServerOrder() : nxagentServerOrder())
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Drawable.c b/nx-X11/programs/Xserver/hw/nxagent/Drawable.c
index 9c16774..f222599 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Drawable.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Drawable.c
@@ -112,6 +112,27 @@ unsigned long nxagentGetColor(DrawablePtr pDrawable, int xPixel, int yPixel);
 unsigned long nxagentGetDrawableColor(DrawablePtr pDrawable);
 unsigned long nxagentGetRegionColor(DrawablePtr pDrawable, RegionPtr pRegion);
 
+int nxagentSkipImage = 0;
+
+static int nxagentTooManyImageData(void)
+{
+  unsigned int r;
+  unsigned int limit;
+
+  limit = nxagentOption(ImageRateLimit);
+
+  r = nxagentGetDataRate() / 1000;
+
+  #ifdef TEST
+  if (r > limit)
+  {
+    fprintf(stderr, "Warning: Current bit rate is: %u kB/s.\n", r);
+  }
+  #endif
+
+  return (r > limit);
+}
+
 int nxagentSynchronizeDrawable(DrawablePtr pDrawable, int wait, unsigned int breakMask, WindowPtr owner)
 {
   int result;
@@ -1304,6 +1325,18 @@ FIXME: All drawables should be set as synchronized and
        never marked as corrupted while the display is
        down.
 */
+
+  nxagentSkipImage = nxagentTooManyImageData();
+
+  if (nxagentOption(ImageRateLimit) && nxagentSkipImage)
+  {
+    #ifdef TEST
+    fprintf(stderr, "nxagentSynchronizeDrawable: Skipping due to bit rate limit reached.\n");
+    #endif
+
+    return;
+  }
+
   if (NXDisplayError(nxagentDisplay) == 1)
   {
     #ifdef TEST
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
index 310b572..332816f 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Handlers.c
@@ -159,6 +159,8 @@ struct _DispatchRec nxagentDispatch = { UNDEFINED, 0, 0, 0 };
  * for our clients or the X server.
  */
 
+extern int nxagentSkipImage;
+
 void nxagentBlockHandler(pointer data, struct timeval **timeout, pointer mask)
 {
   /*
@@ -357,7 +359,7 @@ void nxagentBlockHandler(pointer data, struct timeval **timeout, pointer mask)
                            nxagentCorruptedBackgrounds > 0 ||
                                nxagentCorruptedPixmaps > 0));
 
-    if (synchronize == 1)
+    if (nxagentSkipImage == 0 && synchronize == 1)
     {
       #ifdef TEST
       fprintf(stderr, "nxagentBlockHandler: Setting a zero timeout with [%d][%d][%d] and "
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Init.c b/nx-X11/programs/Xserver/hw/nxagent/Init.c
index f4fc3c7..a50e8a5 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Init.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c
@@ -120,6 +120,8 @@ extern int OsVendorVErrorFFatal;
 extern void (*OsVendorStartRedirectErrorFProc)();
 extern void (*OsVendorEndRedirectErrorFProc)();
 
+extern void SetVendorRelease(int release);
+
 void OsVendorStartRedirectErrorFFunction();
 void OsVendorEndRedirectErrorFFunction();
 
@@ -206,6 +208,22 @@ void InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
   }
 
   /*
+   * Avoid slowness due to buggy_repeat workaround
+   * in libcairo versions >= 1.10.
+   */
+
+  SetVendorRelease(70000000);
+
+  /*
+   * Init the time count for image rate.
+   */
+
+  if (nxagentOption(ImageRateLimit) != 0)
+  { 
+    fprintf(stderr, "Info: Image rate limit set to %u kB/s.\n", nxagentOption(ImageRateLimit));
+  }
+
+  /*
    * Unset the LD_LIBRARY_PATH variable in
    * Popen() before calling execl() in the
    * child process.
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.c b/nx-X11/programs/Xserver/hw/nxagent/Options.c
index 5d78556..ca5be0b 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Options.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c
@@ -85,6 +85,8 @@ void nxagentInitOptions()
 
   nxagentOptions.DeviceControl = 0;
 
+  nxagentOptions.DeviceControlUserDefined = 0;
+
   nxagentOptions.ResetKeyboardAtResume = 1;
 
   nxagentOptions.Reset = 0;
@@ -149,6 +151,8 @@ void nxagentInitOptions()
   nxagentOptions.InhibitXkb = 1;
 
   nxagentOptions.CopyBufferSize = COPY_UNLIMITED;
+
+  nxagentOptions.ImageRateLimit = 0;
 }
 
 /*
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.h b/nx-X11/programs/Xserver/hw/nxagent/Options.h
index 7850a05..40cb179 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Options.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h
@@ -184,6 +184,12 @@ typedef struct _AgentOptions
   int DeviceControl;
 
   /*
+   * Explicitly asked config propagation.
+   */
+
+  int DeviceControlUserDefined;
+
+  /*
    * Resuming keyboard device corrects keymap if session
    * migrates across platforms with different keycode
    * layout.
@@ -369,6 +375,12 @@ typedef struct _AgentOptions
 
   int CopyBufferSize;
 
+  /*
+   * Max image data rate to the encoder input.
+   */
+
+  int ImageRateLimit;
+
 } AgentOptionsRec;
 
 typedef AgentOptionsRec *AgentOptionsPtr;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Pixels.h b/nx-X11/programs/Xserver/hw/nxagent/Pixels.h
index 918d74d..4a02d80 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Pixels.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Pixels.h
@@ -134,7 +134,7 @@ FIXME: Changed macro: NXAGENT_SHOULD_DEFER_COMPOSITE
              (nxagentOption(DeferLevel) == 1 &&                                                          \
               (pDst) -> pDrawable -> type == DRAWABLE_PIXMAP &&                                          \
               (((pSrc) -> pDrawable && nxagentDrawableStatus((pSrc) -> pDrawable) == NotSynchronized) || \
-              ((pMask) && nxagentDrawableStatus((pMask) -> pDrawable) == NotSynchronized))))
+              ((pMask) && (pMask) -> pDrawable && nxagentDrawableStatus((pMask) -> pDrawable) == NotSynchronized))))
 
 
 #define NXAGENT_SHOULD_DEFER_PUTIMAGE(pDrawable) \
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
index 90b8079..3c576c6 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c
@@ -377,11 +377,10 @@ Bool nxagentReconnectSession(void)
   nxagentResizeDesktopAtStartup = False;
 
   /*
-   * The default is device settings have
-   * not to be propagated to the X server.
+   * Propagate device settings if explicitly asked for.
    */
 
-  nxagentChangeOption(DeviceControl, False);
+  nxagentChangeOption(DeviceControl, nxagentOption(DeviceControlUserDefined));
 
   /*
    * We need to zero out every new XID
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Render.c b/nx-X11/programs/Xserver/hw/nxagent/Render.c
index 6c74c14..29bffaa 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Render.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Render.c
@@ -1095,8 +1095,9 @@ void nxagentComposite(CARD8 op, PicturePtr pSrc, PicturePtr pMask, PicturePtr pD
     }
   }
 
-  if (pMask != NULL && pMask -> pDrawable != pSrc -> pDrawable &&
-          pMask -> pDrawable != pDst -> pDrawable)
+  if (pMask != NULL && pMask -> pDrawable != NULL &&
+          pMask -> pDrawable != pSrc -> pDrawable &&
+              pMask -> pDrawable != pDst -> pDrawable)
   {
     nxagentSynchronizeShmPixmap(pMask -> pDrawable, xMask, yMask, width, height);
 
@@ -1259,7 +1260,8 @@ void nxagentGlyphs(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
    * on the real X server.
    */
 
-  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
+  if (pSrc -> pDrawable != NULL &&
+          nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
   {
     #ifdef TEST
     fprintf(stderr, "nxagentGlyphs: Synchronizing source [%s] at [%p].\n",
@@ -1749,7 +1751,8 @@ FIXME: Is this useful or just a waste of bandwidth?
     return;
   }
 
-  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
+  if (pSrc -> pDrawable != NULL &&
+          nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
   {
     #ifdef TEST
     fprintf(stderr, "nxagentTrapezoids: Going to synchronize the source drawable at [%p].\n",
@@ -1843,7 +1846,8 @@ void nxagentTriangles(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
    * operation like nxagentTrapezoids() does.
    */
 
-  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
+  if (pSrc -> pDrawable != NULL &&
+          nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
   {
     #ifdef TEST
     fprintf(stderr, "nxagentTriangles: Going to synchronize the source drawable at [%p].\n",
@@ -1920,7 +1924,8 @@ void nxagentTriStrip(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
    * operation like nxagentTrapezoids() does.
    */
 
-  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
+  if (pSrc -> pDrawable != NULL &&
+          nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
   {
     #ifdef TEST
     fprintf(stderr, "nxagentTriStrip: Going to synchronize the source drawable at [%p].\n",
@@ -1997,7 +2002,8 @@ void nxagentTriFan(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
    * operation like nxagentTrapezoids() does.
    */
 
-  if (nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
+  if (pSrc -> pDrawable != NULL &&
+          nxagentDrawableStatus(pSrc -> pDrawable) == NotSynchronized)
   {
     #ifdef TEST
     fprintf(stderr, "nxagentTriFan: Going to synchronize the source drawable at [%p].\n",
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
index de688a0..9957a7d 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
@@ -1644,6 +1644,9 @@ N/A
     pScreen->RealizeCursor = nxagentRealizeCursor;
     pScreen->UnrealizeCursor = nxagentUnrealizeCursor;
     pScreen->RecolorCursor = nxagentRecolorCursor;
+
+    nxagentSetCursorPositionW = pScreen->SetCursorPosition;
+
     pScreen->SetCursorPosition = nxagentSetCursorPosition;
 
     #define POSITION_OFFSET (pScreen->myNum * (nxagentOption(Width) + \


hooks/post-receive
-- 
nx-libs.git (NX (redistributed))

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "nx-libs.git" (NX (redistributed)).




More information about the x2go-commits mailing list