]> source.dussan.org Git - tigervnc.git/commitdiff
Synched ddxInitGlobals and ddxProcessArgument with modern InitOutput.c.
authorPeter Åstrand <astrand@cendio.se>
Tue, 22 Feb 2005 20:29:40 +0000 (20:29 +0000)
committerPeter Åstrand <astrand@cendio.se>
Tue, 22 Feb 2005 20:29:40 +0000 (20:29 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@215 3789f03b-4d11-0410-bbf8-ca57d06f2519

xc/programs/Xserver/vnc/Xvnc/xvnc.cc

index 7ad34f25b7947b68af45943f4169ee20574cb2ea..bf7d749bdbad3d31785716be405bc6bc52b46f98 100644 (file)
@@ -193,8 +193,6 @@ vfbBitsPerPixel(int depth)
 }
 
 extern "C" {
-  void ddxInitGlobals() {}
-
 void
 ddxGiveUp()
 {
@@ -331,182 +329,207 @@ ddxUseMsg()
   }
 }
 
-static bool displayNumFree(int num)
+/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
+void ddxInitGlobals(void)
 {
-  try {
-    network::TcpListener l(6000+num);
-  } catch (rdr::Exception& e) {
-    return false;
-  }
-  char file[256];
-  sprintf(file, "/tmp/.X%d-lock", num);
-  if (access(file, F_OK) == 0) return false;
-  sprintf(file, "/tmp/.X11-unix/X%d", num);
-  if (access(file, F_OK) == 0) return false;
-  sprintf(file, "/usr/spool/sockets/X11/%d", num);
-  if (access(file, F_OK) == 0) return false;
-  return true;
 }
 
-int ddxProcessArgument(int argc, char *argv[], int i)
+static 
+bool displayNumFree(int num)
 {
-  static Bool firstTime = TRUE;
-
-  if (firstTime)
-  {
-    vfbInitializeDefaultScreens();
-    vfbInitializePixmapDepths();
-    firstTime = FALSE;
-    rfb::initStdIOLoggers();
-    rfb::LogWriter::setLogParams("*:stderr:30");
-  }
+    try {
+       network::TcpListener l(6000+num);
+    } catch (rdr::Exception& e) {
+       return false;
+    }
+    char file[256];
+    sprintf(file, "/tmp/.X%d-lock", num);
+    if (access(file, F_OK) == 0) return false;
+    sprintf(file, "/tmp/.X11-unix/X%d", num);
+    if (access(file, F_OK) == 0) return false;
+    sprintf(file, "/usr/spool/sockets/X11/%d", num);
+    if (access(file, F_OK) == 0) return false;
+    return true;
+}
 
-  if (argv[i][0] ==  ':')
-    displaySpecified = true;
+int 
+ddxProcessArgument(int argc, char *argv[], int i)
+{
+    static Bool firstTime = TRUE;
 
-  if (strcmp (argv[i], "-screen") == 0)        /* -screen n WxHxD */
-  {
-    int screenNum;
-    if (i + 2 >= argc) UseMsg();
-    screenNum = atoi(argv[i+1]);
-    if (screenNum < 0 || screenNum >= MAXSCREENS)
+    if (firstTime)
     {
-      ErrorF("Invalid screen number %d\n", screenNum);
-      UseMsg();
+       vfbInitializeDefaultScreens();
+       vfbInitializePixmapDepths();
+       firstTime = FALSE;
+       rfb::initStdIOLoggers();
+       rfb::LogWriter::setLogParams("*:stderr:30");
     }
-    if (3 != sscanf(argv[i+2], "%dx%dx%d",
-                    &vfbScreens[screenNum].width,
-                    &vfbScreens[screenNum].height,
-                    &vfbScreens[screenNum].depth))
+
+    if (argv[i][0] ==  ':')
+       displaySpecified = true;
+
+    if (strcmp (argv[i], "-screen") == 0)      /* -screen n WxHxD */
     {
-      ErrorF("Invalid screen configuration %s\n", argv[i+2]);
-      UseMsg();
-    }
+       int screenNum;
+       if (i + 2 >= argc) UseMsg();
+       screenNum = atoi(argv[i+1]);
+       if (screenNum < 0 || screenNum >= MAXSCREENS)
+       {
+           ErrorF("Invalid screen number %d\n", screenNum);
+           UseMsg();
+       }
+       if (3 != sscanf(argv[i+2], "%dx%dx%d",
+                       &vfbScreens[screenNum].width,
+                       &vfbScreens[screenNum].height,
+                       &vfbScreens[screenNum].depth))
+       {
+           ErrorF("Invalid screen configuration %s\n", argv[i+2]);
+           UseMsg();
+       }
 
-    if (screenNum >= vfbNumScreens)
-      vfbNumScreens = screenNum + 1;
-    lastScreen = screenNum;
-    return 3;
-  }
+       if (screenNum >= vfbNumScreens)
+           vfbNumScreens = screenNum + 1;
+       lastScreen = screenNum;
+       return 3;
+    }
 
-  if (strcmp (argv[i], "-pixdepths") == 0)     /* -pixdepths list-of-depth */
-  {
-    int depth, ret = 1;
+    if (strcmp (argv[i], "-pixdepths") == 0)   /* -pixdepths list-of-depth */
+    {
+       int depth, ret = 1;
 
-    if (++i >= argc) UseMsg();
-    while ((i < argc) && (depth = atoi(argv[i++])) != 0)
+       if (++i >= argc) UseMsg();
+       while ((i < argc) && (depth = atoi(argv[i++])) != 0)
+       {
+           if (depth < 0 || depth > 32)
+           {
+               ErrorF("Invalid pixmap depth %d\n", depth);
+               UseMsg();
+           }
+           vfbPixmapDepths[depth] = TRUE;
+           ret++;
+       }
+       return ret;
+    }
+    
+    if (strcmp (argv[i], "+render") == 0)      /* +render */
     {
-      if (depth < 0 || depth > 32)
-      {
-        ErrorF("Invalid pixmap depth %d\n", depth);
-        UseMsg();
-      }
-      vfbPixmapDepths[depth] = TRUE;
-      ret++;
+       Render = TRUE;
+       return 1;
     }
-    return ret;
-  }
-
-  if (strcmp (argv[i], "+render") == 0)        /* +render */
-  {
-    Render = TRUE;
-    return 1;
-  }
   
-  if (strcmp (argv[i], "-render") == 0)        /* -render */
-  {
-    Render = FALSE;
-    return 1;
-  }
-
-  if (strcmp (argv[i], "-blackpixel") == 0)    /* -blackpixel n */
-  {
-    Pixel pix;
-    if (++i >= argc) UseMsg();
-    pix = atoi(argv[i]);
-    if (-1 == lastScreen)
+    if (strcmp (argv[i], "-render") == 0)      /* -render */
     {
-      int i;
-      for (i = 0; i < MAXSCREENS; i++)
-      {
-        vfbScreens[i].blackPixel = pix;
-      }
+       Render = FALSE;
+       return 1;
     }
-    else
+
+    if (strcmp (argv[i], "-blackpixel") == 0)  /* -blackpixel n */
     {
-      vfbScreens[lastScreen].blackPixel = pix;
+       Pixel pix;
+       if (++i >= argc) UseMsg();
+       pix = atoi(argv[i]);
+       if (-1 == lastScreen)
+       {
+           int i;
+           for (i = 0; i < MAXSCREENS; i++)
+           {
+               vfbScreens[i].blackPixel = pix;
+           }
+       }
+       else
+       {
+           vfbScreens[lastScreen].blackPixel = pix;
+       }
+       return 2;
     }
-    return 2;
-  }
 
-  if (strcmp (argv[i], "-whitepixel") == 0)    /* -whitepixel n */
-  {
-    Pixel pix;
-    if (++i >= argc) UseMsg();
-    pix = atoi(argv[i]);
-    if (-1 == lastScreen)
+    if (strcmp (argv[i], "-whitepixel") == 0)  /* -whitepixel n */
     {
-      int i;
-      for (i = 0; i < MAXSCREENS; i++)
-      {
-        vfbScreens[i].whitePixel = pix;
-      }
+       Pixel pix;
+       if (++i >= argc) UseMsg();
+       pix = atoi(argv[i]);
+       if (-1 == lastScreen)
+       {
+           int i;
+           for (i = 0; i < MAXSCREENS; i++)
+           {
+               vfbScreens[i].whitePixel = pix;
+           }
+       }
+       else
+       {
+           vfbScreens[lastScreen].whitePixel = pix;
+       }
+       return 2;
     }
-    else
+    
+    if (strcmp (argv[i], "-linebias") == 0)    /* -linebias n */
     {
-      vfbScreens[lastScreen].whitePixel = pix;
+       unsigned int linebias;
+       if (++i >= argc) UseMsg();
+       linebias = atoi(argv[i]);
+       if (-1 == lastScreen)
+       {
+           int i;
+           for (i = 0; i < MAXSCREENS; i++)
+           {
+               vfbScreens[i].lineBias = linebias;
+           }
+       }
+       else
+       {
+           vfbScreens[lastScreen].lineBias = linebias;
+       }
+       return 2;
     }
-    return 2;
-  }
 
-  if (strcmp (argv[i], "-linebias") == 0)      /* -linebias n */
-  {
-    unsigned int linebias;
-    if (++i >= argc) UseMsg();
-    linebias = atoi(argv[i]);
-    if (-1 == lastScreen)
+#ifdef HAS_MMAP
+    if (strcmp (argv[i], "-fbdir") == 0)       /* -fbdir directory */
     {
-      int i;
-      for (i = 0; i < MAXSCREENS; i++)
-      {
-        vfbScreens[i].lineBias = linebias;
-      }
+       if (++i >= argc) UseMsg();
+       pfbdir = argv[i];
+       fbmemtype = MMAPPED_FILE_FB;
+       return 2;
     }
-    else
+#endif /* HAS_MMAP */
+
+#ifdef HAS_SHM
+    if (strcmp (argv[i], "-shmem") == 0)       /* -shmem */
     {
-      vfbScreens[lastScreen].lineBias = linebias;
+       fbmemtype = SHARED_MEMORY_FB;
+       return 1;
     }
-    return 2;
-  }
-
-  if (strcmp(argv[i], "-geometry") == 0)
-  {
-    if (++i >= argc) UseMsg();
-    if (sscanf(argv[i],"%dx%d",&vfbScreens[0].width,
-               &vfbScreens[0].height) != 2) {
-      ErrorF("Invalid geometry %s\n", argv[i]);
-      UseMsg();
+#endif
+    
+    if (strcmp(argv[i], "-geometry") == 0)
+    {
+       if (++i >= argc) UseMsg();
+       if (sscanf(argv[i],"%dx%d",&vfbScreens[0].width,
+                  &vfbScreens[0].height) != 2) {
+           ErrorF("Invalid geometry %s\n", argv[i]);
+           UseMsg();
+       }
+       return 2;
     }
-    return 2;
-  }
-
-  if (strcmp(argv[i], "-depth") == 0)
-  {
-    if (++i >= argc) UseMsg();
-    vfbScreens[0].depth = atoi(argv[i]);
-    return 2;
-  }
-
-  if (strcmp(argv[i], "-pixelformat") == 0)
-  {
-    char rgbbgr[4];
-    int bits1, bits2, bits3;
-    if (++i >= argc) UseMsg();
-    if (sscanf(argv[i], "%3s%1d%1d%1d", rgbbgr,&bits1,&bits2,&bits3) < 4) {
-      ErrorF("Invalid pixel format %s\n", argv[i]);
-      UseMsg();
+    
+    if (strcmp(argv[i], "-depth") == 0)
+    {
+       if (++i >= argc) UseMsg();
+       vfbScreens[0].depth = atoi(argv[i]);
+       return 2;
     }
 
+    if (strcmp(argv[i], "-pixelformat") == 0)
+    {
+       char rgbbgr[4];
+       int bits1, bits2, bits3;
+       if (++i >= argc) UseMsg();
+       if (sscanf(argv[i], "%3s%1d%1d%1d", rgbbgr,&bits1,&bits2,&bits3) < 4) {
+           ErrorF("Invalid pixel format %s\n", argv[i]);
+           UseMsg();
+       }
+
 #define SET_PIXEL_FORMAT(vfbScreen)                     \
     (vfbScreen).pixelFormatDefined = TRUE;              \
     (vfbScreen).depth = bits1 + bits2 + bits3;          \
@@ -524,55 +547,55 @@ int ddxProcessArgument(int argc, char *argv[], int i)
         UseMsg();                                       \
     }
 
-    if (-1 == lastScreen)
-    {
-      int i;
-      for (i = 0; i < MAXSCREENS; i++)
-      {
-        SET_PIXEL_FORMAT(vfbScreens[i]);
-      }
+       if (-1 == lastScreen)
+       {
+           int i;
+           for (i = 0; i < MAXSCREENS; i++)
+           {
+               SET_PIXEL_FORMAT(vfbScreens[i]);
+           }
+       }
+       else
+       {
+           SET_PIXEL_FORMAT(vfbScreens[lastScreen]);
+       }
+
+       return 2;
     }
-    else
+
+    if (strcmp(argv[i], "-inetd") == 0)
     {
-      SET_PIXEL_FORMAT(vfbScreens[lastScreen]);
+       dup2(0,3);
+       vncInetdSock = 3;
+       close(2);
+       
+       if (!displaySpecified) {
+           int port = network::TcpSocket::getSockPort(vncInetdSock);
+           int displayNum = port - 5900;
+           if (displayNum < 0 || displayNum > 99 || !displayNumFree(displayNum)) {
+               for (displayNum = 1; displayNum < 100; displayNum++)
+                   if (displayNumFree(displayNum)) break;
+               
+               if (displayNum == 100)
+                   FatalError("Xvnc error: no free display number for -inetd");
+           }
+           
+           display = displayNumStr;
+           sprintf(displayNumStr, "%d", displayNum);
+       }
+       
+       return 1;
     }
-
-    return 2;
-  }
-
-  if (strcmp(argv[i], "-inetd") == 0)
-  {
-    dup2(0,3);
-    vncInetdSock = 3;
-    close(2);
-
-    if (!displaySpecified) {
-      int port = network::TcpSocket::getSockPort(vncInetdSock);
-      int displayNum = port - 5900;
-      if (displayNum < 0 || displayNum > 99 || !displayNumFree(displayNum)) {
-        for (displayNum = 1; displayNum < 100; displayNum++)
-          if (displayNumFree(displayNum)) break;
-
-        if (displayNum == 100)
-          FatalError("Xvnc error: no free display number for -inetd");
-      }
-
-      display = displayNumStr;
-      sprintf(displayNumStr, "%d", displayNum);
+    
+    if (rfb::Configuration::setParam(argv[i]))
+       return 1;
+    
+    if (argv[i][0] == '-' && i+1 < argc) {
+       if (rfb::Configuration::setParam(&argv[i][1], argv[i+1]))
+           return 2;
     }
-
-    return 1;
-  }
-
-  if (rfb::Configuration::setParam(argv[i]))
-    return 1;
-
-  if (argv[i][0] == '-' && i+1 < argc) {
-    if (rfb::Configuration::setParam(&argv[i][1], argv[i+1]))
-      return 2;
-  }
-
-  return 0;
+    
+    return 0;
 }
 
 #ifdef DDXTIME /* from ServerOSDefines */