[X2go-Commits] nx-libs.git - nxagent (branch) updated: nxagent/3.5.0-5-1-gc29053f

X2go dev team git-admin at x2go.org
Wed Dec 28 18:49:42 CET 2011


The branch, nxagent has been updated
       via  c29053f82cbea5f2704d99c4d5e8afe0329e5cbe (commit)
      from  e01b9177b41f7d27a934d41fa38d550fa0026b45 (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:
 nx-X11/programs/Xserver/hw/nxagent/CHANGELOG  |   14 +++
 nx-X11/programs/Xserver/hw/nxagent/Colormap.c |   10 ++-
 nx-X11/programs/Xserver/hw/nxagent/Display.c  |  127 ++++++++++++++++---------
 nx-X11/programs/Xserver/hw/nxagent/Events.c   |   30 ++++---
 nx-X11/programs/Xserver/hw/nxagent/Keyboard.c |   24 +++++-
 nx-X11/programs/Xserver/hw/nxagent/Keyboard.h |    3 +
 nx-X11/programs/Xserver/hw/nxagent/Screen.c   |   81 ++++++++++++----
 nx-X11/programs/Xserver/hw/nxagent/Window.c   |    7 ++
 8 files changed, 212 insertions(+), 84 deletions(-)

The diff of changes is:
diff --git a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
index 0f20b79..763f066 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
+++ b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
@@ -1,5 +1,19 @@
 ChangeLog:
 
+nxagent-3.5.0-7
+
+- Fixed TR10I02622. Corrected function searching for icon file.
+
+nxagent-3.5.0-6
+
+- Fixed TR10I02621. Avoided explicit call to XMapWindow() at recon-
+  nection stage.
+
+- Fixed TR10I02620. Solved error in default visual set up.
+
+- Fixed TR10H02390. Get the actual remote key code for CapsLock and
+  NumLock.
+
 nxagent-3.5.0-5
 
 - The NX agent failed to resize its own window to fit the desktop size
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Colormap.c b/nx-X11/programs/Xserver/hw/nxagent/Colormap.c
index b0f0507..fbe52db 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Colormap.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Colormap.c
@@ -69,8 +69,9 @@ Bool nxagentCreateColormap(ColormapPtr pCmap)
   Visual *visual;
   int class;
 
-  #ifdef TEST
-  fprintf(stderr, "nxagentCreateColormap: Going to create new colormap.\n");
+  #if defined(DEBUG) || defined(DEBUG_COLORMAP)
+  fprintf(stderr, "nxagentCreateColormap: Going to create new colormap with "
+              " visual [%lu].\n", pCmap->pVisual);
   #endif
 
   pVisual = pCmap->pVisual;
@@ -511,6 +512,11 @@ Bool nxagentCreateDefaultColormap(ScreenPtr pScreen)
   unsigned short zero = 0, ones = 0xFFFF;
   Pixel wp, bp;
 
+  #if defined(DEBUG) || defined(DEBUG_COLORMAP)
+  fprintf(stderr, "Debug: Searching for the root visual [%lu].\n",
+              pScreen->rootVisual);
+  #endif
+
   for (pVisual = pScreen->visuals;
        pVisual->vid != pScreen->rootVisual;
        pVisual++);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Display.c b/nx-X11/programs/Xserver/hw/nxagent/Display.c
index db70434..c60718d 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c
@@ -1482,6 +1482,10 @@ void nxagentSetDefaultVisual(void)
 
   int i;
 
+  nxagentDefaultVisualIndex = 3;
+
+  return;
+
   if (nxagentUserDefaultClass || nxagentUserDefaultDepth)
   {
     nxagentDefaultVisualIndex = UNDEFINED;
@@ -1840,68 +1844,98 @@ FIXME: Is this needed?
   nxagentDisplay = NULL;
 }
 
+static FILE *nxagentLookForIconFile(char *iconName, const char *permission,
+                                        char *return_path)
+{
+  char *path;
+  char *end;
+  char singlePath[PATH_MAX];
+  int breakLoop;
+  FILE *fptr = NULL;
+
+  #ifdef WIN32
+  const char separator = ';';
+  const char *slash = "\\";
+  #else
+  const char separator = ':';
+  const char *slash = "/";
+  #endif
+
+  if ((path = getenv("PATH")) == NULL)
+  {
+    return NULL;
+  }
+
+  for(breakLoop = 0; breakLoop == 0 && fptr == NULL; )
+  {
+    end = strchr(path, separator);
+
+    if (end != NULL)
+    {
+      strncpy(singlePath, path, (unsigned long)(end - path));
+
+      singlePath[(unsigned long)(end - path)] = 0;
+
+      path = end + 1;
+    }
+    else
+    {
+      strcpy(singlePath, path);
+
+      breakLoop = 1;
+    }
+
+    if (singlePath[strlen(singlePath)- 1] == slash[0])
+    {
+      singlePath[strlen(singlePath)- 1] = 0;
+    }
+
+    if (strlen(singlePath) + strlen(iconName) + 1 < PATH_MAX)
+    {
+      strncat(singlePath, slash, 1);
+      strcat(singlePath, iconName);
+
+      if ((fptr = fopen(singlePath, permission)) != NULL)
+      {
+        strcpy(return_path, singlePath);
+      }
+    }
+    else
+    {
+      fprintf(stderr, "Error: Path too long.\n");
+    }
+  }
+
+  return fptr;
+}
+
 Bool nxagentMakeIcon(Display *display, Pixmap *nxIcon, Pixmap *nxMask)
 {
-  char *env_path = getenv("PATH");
-  int lenght_env_path = 0;
-  char icon_filename [256];
-  char default_path [256];
-  char *icon_path = malloc( strlen(env_path) + sizeof(icon_filename) );
+  char default_path [PATH_MAX];
+  char icon_path [PATH_MAX];
   FILE *icon_fp;
   int status;
   Bool success = False;
   XlibPixmap IconPixmap;
   XlibPixmap IconShape;
 
-  if (env_path == NULL)
-    lenght_env_path = 0;
-  else
-    lenght_env_path = strlen(env_path) + 1;
-  strncpy(icon_filename, "", 255);
-  strncpy(default_path, "", 255);
-
-  strcat(icon_filename, NXAGENT_ICON_NAME);
-  strcat(default_path,"/usr/NX/share/images/");
-  strcat(default_path,icon_filename);
+  snprintf(default_path, PATH_MAX-1, "/usr/NX/share/images/%s", NXAGENT_ICON_NAME);
 
   if ((icon_fp = fopen(default_path, "r")) == NULL)
   {
-    char *s;
-    char *temp_path = malloc(lenght_env_path + strlen(icon_filename) );
-    char *temp_path1 = malloc(lenght_env_path + strlen(icon_filename) );
-
-    strncpy(temp_path, env_path, strlen(env_path));
-    strncpy(temp_path1, "", lenght_env_path + strlen(icon_filename) );
+    icon_fp = nxagentLookForIconFile(NXAGENT_ICON_NAME, "r", icon_path);
 
-    while (strlen(temp_path) > 0)
+    if (icon_fp != NULL)
     {
-       s = strpbrk (temp_path, ":");
-       if (s == NULL) break;
-
-       strncpy (temp_path1, temp_path , strlen(temp_path) - strlen(s) );
-       strncat (temp_path1, "/", 1);
-       strncat (temp_path1, icon_filename, strlen(icon_filename));
-       if ((icon_fp = fopen(temp_path1, "r")) != NULL)
-       {
-          fclose (icon_fp);
-          success = True;
-          strcpy(icon_path,temp_path1);
-          break;
-       }
-       strncpy(temp_path1, "", lenght_env_path + strlen(icon_filename) );
-       strncpy(temp_path1, s + 1, strlen(s)-1);
-       strncpy(temp_path, "", lenght_env_path + strlen(icon_filename) );
-       strcpy(temp_path, temp_path1 );
-       strncpy(temp_path1, "", lenght_env_path + strlen(icon_filename) );
-     }
-     free(temp_path);
-     free(temp_path1);
+      fclose (icon_fp);
+      success = True;
+    }
   }
   else
   {
-     fclose (icon_fp);
-     success = True;
-     strcpy(icon_path, default_path);
+    fclose (icon_fp);
+    success = True;
+    strcpy(icon_path, default_path);
   }
 
   if (success)
@@ -1948,7 +1982,6 @@ Bool nxagentMakeIcon(Display *display, Pixmap *nxIcon, Pixmap *nxMask)
      }
   }
 
-  free(icon_path);
 
   *nxIcon = IconPixmap;
   *nxMask = IconShape;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c
index ce84c1b..d0efa71 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Events.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c
@@ -395,8 +395,10 @@ void nxagentRemoteWindowInfo(Window win, int indent, Bool newLine)
 
   fprintf(stderr, "x=%d y=%d width=%d height=%d class=%s map_state=%s "
              "override_redirect=%s\n", attributes.x, attributes.y,
-                 attributes.width, attributes.height, (attributes.class == 0) ?
-                     "InputOutput" : "InputOnly", (attributes.map_state == 0) ?
+                 attributes.width, attributes.height,
+                     (attributes.class == 0) ? "CopyFromParent" :
+                     ((attributes.class == 1) ? "InputOutput" : "InputOnly"),
+                     (attributes.map_state == 0) ?
                          "IsUnmapped" : (attributes.map_state == 1 ?
                              "IsUnviewable" : "IsViewable"),
                                  (attributes.override_redirect == 0) ?
@@ -415,9 +417,9 @@ void nxagentRemoteWindowInfo(Window win, int indent, Bool newLine)
 void nxagentRemoteWindowsTree(Window window, int level)
 {
   int i, j;
-  Window rootWin, parentWin;
+  unsigned long rootWin, parentWin;
   unsigned int numChildren;
-  Window *childList;
+  unsigned long *childList;
 
   if (!XQueryTree(nxagentDisplay, window, &rootWin, &parentWin, &childList,
                       &numChildren))
@@ -517,9 +519,11 @@ void nxagentInternalWindowInfo(WindowPtr pWin, int indent, Bool newLine)
   fprintf(stderr, "x=%d y=%d width=%d height=%d class=%s map_state=%s "
              "override_redirect=%s", pWin -> drawable.x, pWin -> drawable.y,
                  pWin -> drawable.width, pWin -> drawable.height,
-                     (pWin -> drawable.class == 0) ? "InputOutput" :
-                         "InputOnly", (pWin -> mapped == 0) ?
-                             "IsUnmapped" : (pWin -> mapped == 1 ?
+                     (pWin -> drawable.class == 0) ? "CopyFromParent" :
+                     ((pWin -> drawable.class == 1) ? "InputOutput" :
+                      "InputOnly"),
+                      (pWin -> mapped == 0) ?
+                             "IsUnmapped" : (pWin -> realized == 0 ?
                                  "IsUnviewable" : "IsViewable"),
                                      (pWin -> overrideRedirect == 0) ?
                                          "No" : "Yes");
@@ -1142,11 +1146,11 @@ FIXME: Don't enqueue the KeyRelease event if the key was
 
         if (nxagentXkbState.Initialized == 0)
         {
-          if (X.xkey.keycode == 66)
+          if (X.xkey.keycode == nxagentCapsLockKeycode)
           {
             nxagentXkbCapsTrap = 1;
           }
-          else if (X.xkey.keycode == 77)
+          else if (X.xkey.keycode == nxagentNumLockKeycode)
           {
             nxagentXkbNumTrap = 1;
           }
@@ -2292,11 +2296,11 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result)
 
   if (nxagentXkbState.Initialized == 0)
   {
-    if (X -> xkey.keycode == 66)
+    if (X -> xkey.keycode == nxagentCapsLockKeycode)
     {
       nxagentXkbCapsTrap = 1;
     }
-    else if (X -> xkey.keycode == 77)
+    else if (X -> xkey.keycode == nxagentNumLockKeycode)
     {
       nxagentXkbNumTrap = 1;
     }
@@ -2312,11 +2316,11 @@ int nxagentHandleKeyPress(XEvent *X, enum HandleEventResult *result)
     return 1;
   }
 
-  if (X -> xkey.keycode == 66)
+  if (X -> xkey.keycode == nxagentCapsLockKeycode)
   {
     nxagentXkbState.Caps = (~nxagentXkbState.Caps & 1);
   }
-  else if (X -> xkey.keycode == 77)
+  else if (X -> xkey.keycode == nxagentNumLockKeycode)
   {
     nxagentXkbState.Num = (~nxagentXkbState.Num & 1);
   }
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
index 8db3889..e3b58b6 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
@@ -189,7 +189,12 @@ static char *nxagentXkbGetRules(void);
 
 unsigned int nxagentAltMetaMask;
 
-void nxagentCheckAltMetaKeys(CARD8, int);
+static void nxagentCheckAltMetaKeys(CARD8, int);
+
+CARD8 nxagentCapsLockKeycode = 66;
+CARD8 nxagentNumLockKeycode  = 77;
+
+static void nxagentCheckRemoteKeycodes(void);
 
 static CARD8 nxagentConvertedKeycodes[] =
 {
@@ -784,6 +789,8 @@ N/A
         }
       XFreeModifiermap(modifier_keymap);
 
+      nxagentCheckRemoteKeycodes();
+
       keySyms.minKeyCode = min_keycode;
       keySyms.maxKeyCode = max_keycode;
       keySyms.mapWidth = mapWidth;
@@ -1343,7 +1350,7 @@ int nxagentResetKeyboard(void)
   }
 }
 
-void  nxagentCheckAltMetaKeys(CARD8 keycode, int j)
+void nxagentCheckAltMetaKeys(CARD8 keycode, int j)
 {
   if (keycode == XKeysymToKeycode(nxagentDisplay, XK_Meta_L))
   {
@@ -1366,6 +1373,19 @@ void  nxagentCheckAltMetaKeys(CARD8 keycode, int j)
   }
 }
 
+void nxagentCheckRemoteKeycodes()
+{
+  nxagentCapsLockKeycode = XKeysymToKeycode(nxagentDisplay, XK_Caps_Lock);
+
+  nxagentNumLockKeycode  = XKeysymToKeycode(nxagentDisplay, XK_Num_Lock);
+
+  #ifdef DEBUG
+  fprintf(stderr, "nxagentCheckRemoteKeycodes: Remote CapsLock keycode "
+              "is [%d] NumLock [%d].\n", nxagentCapsLockKeycode,
+                  nxagentNumLockKeycode);
+  #endif
+}
+
 static int nxagentSaveKeyboardDeviceData(DeviceIntPtr dev, DeviceIntPtr devBackup)
 {
   if (devBackup == NULL)
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.h b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.h
index 0e11a8a..12d953d 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.h
@@ -115,4 +115,7 @@ void nxagentResetKeycodeConversion(void);
 
 CARD8 nxagentConvertKeycode(CARD8 k);
 
+extern CARD8 nxagentCapsLockKeycode;
+extern CARD8 nxagentNumLockKeycode;
+
 #endif /* __Keyboard_H__ */
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
index b847b08..de688a0 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
@@ -839,6 +839,8 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
   int bitsPerPixel;
   int sizeInBytes;
 
+  int defaultVisualIndex = 0;
+
   #ifdef TEST
   fprintf(stderr, "nxagentOpenScreen: Called for screen index [%d].\n",
               index);
@@ -1163,6 +1165,11 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
      * Initialize the visuals.
      */
 
+    #if defined(DEBUG) || defined(DEBUG_COLORMAP)
+    fprintf(stderr, "Debug: Setting up visuals. Original array has size "
+                "[%d].\n", nxagentNumVisuals); 
+    #endif
+
     numVisuals = 0;
     numDepths = nxagentNumDepths;
 
@@ -1186,26 +1193,46 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
        * Check for and remove the duplicates.
        */
 
-      for (j = 0; j < numVisuals; j++)
+      if (i == nxagentDefaultVisualIndex)
       {
-        if (visuals[numVisuals].class           == visuals[j].class           &&
-            visuals[numVisuals].bitsPerRGBValue == visuals[j].bitsPerRGBValue &&
-            visuals[numVisuals].ColormapEntries == visuals[j].ColormapEntries &&
-            visuals[numVisuals].nplanes         == visuals[j].nplanes         &&
-            visuals[numVisuals].redMask         == visuals[j].redMask         &&
-            visuals[numVisuals].greenMask       == visuals[j].greenMask       &&
-            visuals[numVisuals].blueMask        == visuals[j].blueMask        &&
-            visuals[numVisuals].offsetRed       == visuals[j].offsetRed       &&
-            visuals[numVisuals].offsetGreen     == visuals[j].offsetGreen     &&
-            visuals[numVisuals].offsetBlue      == visuals[j].offsetBlue)
-          break;
+        defaultVisualIndex = numVisuals;
+
+        #if defined(DEBUG) || defined(DEBUG_COLORMAP)
+        fprintf(stderr, "Debug: Set default visual index [%d].\n" ,
+                    defaultVisualIndex); 
+        #endif
       }
+      else
+      {
+        for (j = 0; j < numVisuals; j++)
+        {
+          if (visuals[numVisuals].class == visuals[j].class &&
+              visuals[numVisuals].bitsPerRGBValue ==
+                  visuals[j].bitsPerRGBValue &&
+              visuals[numVisuals].ColormapEntries ==
+                  visuals[j].ColormapEntries &&
+              visuals[numVisuals].nplanes == visuals[j].nplanes &&
+              visuals[numVisuals].redMask == visuals[j].redMask &&
+              visuals[numVisuals].greenMask == visuals[j].greenMask &&
+              visuals[numVisuals].blueMask == visuals[j].blueMask &&
+              visuals[numVisuals].offsetRed == visuals[j].offsetRed &&
+              visuals[numVisuals].offsetGreen == visuals[j].offsetGreen &&
+              visuals[numVisuals].offsetBlue == visuals[j].offsetBlue)
+            break;
+        }
+ 
+        if (j < numVisuals)
+            continue;
 
-      if (j < numVisuals)
-        continue;
+      }
 
       depthIndex = UNDEFINED;
 
+      #if defined(DEBUG) || defined(DEBUG_COLORMAP)
+      fprintf(stderr, "Debug: Added visual [%lu].\n" ,
+                  visuals[numVisuals].vid); 
+      #endif
+
       for (j = 0; j < numDepths; j++)
       {
         if (depths[j].depth == nxagentVisuals[i].depth)
@@ -1240,11 +1267,25 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
 
       depths[depthIndex].numVids++;
 
+      #if defined(DEBUG) || defined(DEBUG_COLORMAP)
+      fprintf(stderr, "Debug: Registered visual [%lu] for depth [%d (%d)].\n" ,
+                  visuals[numVisuals].vid, depthIndex,
+                      depths[depthIndex].depth); 
+      #endif
+
       numVisuals++;
     }
 
-    defaultVisual = visuals[nxagentDefaultVisualIndex].vid;
-    rootDepth = visuals[nxagentDefaultVisualIndex].nplanes;
+    #if defined(DEBUG) || defined(DEBUG_COLORMAP)
+    fprintf(stderr, "Debug: Setting default visual [%d (%lu)].\n",
+                defaultVisualIndex, visuals[defaultVisualIndex].vid);
+
+    fprintf(stderr, "Debug: Setting root depth [%d].\n",
+                visuals[defaultVisualIndex].nplanes); 
+    #endif
+
+    defaultVisual = visuals[defaultVisualIndex].vid;
+    rootDepth = visuals[defaultVisualIndex].nplanes;
 
     nxagentInitAlphaVisual();
 
@@ -1271,7 +1312,7 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
       return FALSE;
     }
 
-    #ifdef TEST
+    #if defined(DEBUG) || defined(DEBUG_COLORMAP)
     fprintf(stderr, "nxagentOpenScreen: Before fbScreenInit numVisuals [%d] numDepths [%d] "
               "rootDepth [%d] defaultVisual [%ld].\n", numVisuals, numDepths,
                   rootDepth, defaultVisual);
@@ -1288,7 +1329,7 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
       return FALSE;
     }
 
-    #ifdef TEST
+    #if defined(DEBUG) || defined(DEBUG_COLORMAP)
     fprintf(stderr, "nxagentOpenScreen: After fbScreenInit numVisuals [%d] numDepths [%d] "
               "rootDepth [%d] defaultVisual [%ld].\n", numVisuals, numDepths,
                   rootDepth, defaultVisual);
@@ -1300,7 +1341,7 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
      * and will modify numVisuals and numDepths.
      */
 
-    #ifdef TEST
+    #if defined(DEBUG) || defined(DEBUG_COLORMAP)
     fprintf(stderr, "nxagentOpenScreen: Before GLX numVisuals [%d] numDepths [%d] "
               "rootDepth [%d] defaultVisual [%ld].\n", numVisuals, numDepths,
                   rootDepth, defaultVisual);
@@ -1309,7 +1350,7 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen,
     nxagentInitGlxExtension(&visuals, &depths, &numVisuals, &numDepths,
                                 &rootDepth, &defaultVisual);
 
-    #ifdef TEST
+    #if defined(DEBUG) || defined(DEBUG_COLORMAP)
     fprintf(stderr, "nxagentOpenScreen: After GLX numVisuals [%d] numDepths [%d] "
               "rootDepth [%d] defaultVisual [%ld].\n", numVisuals, numDepths,
                   rootDepth, defaultVisual);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c
index 9881936..35a3598 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Window.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c
@@ -3170,10 +3170,17 @@ static void nxagentReconfigureWindow(pointer param0, XID param1, pointer data_bu
     {
         nxagentRealizeWindow (pWin);
     }
+/*
+XXX: This would break Motif menus.
+     If pWin is mapped but not realized, a followin UnmapWindow() wouldn't
+     do anything, leaving this mapped window around. XMapWindow()
+     is called in nxagentRealizeWindow() and there it is enough.
+
     else if (pWin->mapped)
     {
       XMapWindow(nxagentDisplay, nxagentWindow(pWin));
     }
+*/
     else if (nxagentOption(Rootless) && pWin -> overrideRedirect == 0 &&
                  nxagentWindowTopLevel(pWin) && nxagentIsIconic(pWin))
     {


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

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 libraries).




More information about the x2go-commits mailing list