Description: Add -norootlessexit cmdline option to nxagent
Author: Oleksandr Shneyder <o.schneyder@phoca-gmbh.de>

--- a/nx-X11/programs/Xserver/hw/nxagent/Args.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c
@@ -672,6 +672,12 @@
     return 1;
   }
 
+  if (!strcmp(argv[i], "-norootlessexit")) {
+    nxagentChangeOption(NoRootlessExit, True);
+    return 1;
+  }
+
+
   if (!strcmp(argv[i], "-noonce"))
   {
       nxagentOnce = False;
@@ -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");
+  ErrorF("-norootlessexit        don't exit if there are no clients in rootless mode\n");
 #ifdef RENDER
   ErrorF("-norender              disable the use of the render extension\n");
   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
@@ -219,7 +219,7 @@
 
   if (nxagentOption(Rootless) &&
           nxagentLastWindowDestroyed && nxagentRootlessDialogPid == 0 &&
-              now > nxagentLastWindowDestroyedTime + 30 * 1000)
+              now > nxagentLastWindowDestroyedTime + 30 * 1000 && !nxagentOption(NoRootlessExit))
   {
     #ifdef WARNING
     fprintf(stderr, "nxagentBlockHandler: No application running. Closing the session.\n");
--- a/nx-X11/programs/Xserver/hw/nxagent/Options.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c
@@ -56,6 +56,7 @@
   nxagentOptions.Persistent = 1;
   nxagentOptions.Rootless   = UNDEFINED;
   nxagentOptions.Fullscreen = UNDEFINED;
+  nxagentOptions.NoRootlessExit = False;
 
   nxagentOptions.X           = 0;
   nxagentOptions.Y           = 0;
--- a/nx-X11/programs/Xserver/hw/nxagent/Options.h
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h
@@ -381,6 +381,13 @@
 
   int ImageRateLimit;
 
+ /*
+  * True if agent should not exit if there are no
+  * clients in rootless mode
+  */
+
+  int NoRootlessExit;
+
 } AgentOptionsRec;
 
 typedef AgentOptionsRec *AgentOptionsPtr;
