]> source.dussan.org Git - tigervnc.git/commitdiff
Support the RENDER extension.
authorPeter Åstrand <astrand@cendio.se>
Mon, 14 Feb 2005 20:25:49 +0000 (20:25 +0000)
committerPeter Åstrand <astrand@cendio.se>
Mon, 14 Feb 2005 20:25:49 +0000 (20:25 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@185 3789f03b-4d11-0410-bbf8-ca57d06f2519

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

index 2d2dc78dc994d3fc25823849c22b4ecb8fa2ba4a..f2da525b535271f1c511fa669f4a3cf7455ee556 100644 (file)
@@ -134,6 +134,7 @@ static vfbScreenInfo vfbScreens[MAXSCREENS];
 static Bool vfbPixmapDepths[33];
 static char needswap = 0;
 static int lastScreen = -1;
+static Bool Render = TRUE;
 
 static bool displaySpecified = false;
 static bool wellKnownSocketsCreated = false;
@@ -218,6 +219,10 @@ extern "C" {
            VENDOR_STRING);
     ErrorF("-screen scrn WxHxD     set screen's width, height, depth\n");
     ErrorF("-pixdepths list-of-int support given pixmap depths\n");
+#ifdef RENDER
+    ErrorF("+/-render             turn on/off RENDER extension support"
+          "(default on)\n");
+#endif
     ErrorF("-linebias n            adjust thin line pixelization\n");
     ErrorF("-blackpixel n          pixel value for black\n");
     ErrorF("-whitepixel n          pixel value for white\n");
@@ -314,6 +319,18 @@ int ddxProcessArgument(int argc, char *argv[], int i)
     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;
@@ -749,9 +766,15 @@ static Bool vfbScreenInit(int index, ScreenPtr pScreen, int argc, char** argv)
   defaultColorVisualClass
     = (pvfb->bitsPerPixel > 8) ? TrueColor : PseudoColor;
 
-  if (!fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
-                    dpi, dpi, pvfb->paddedWidth, pvfb->bitsPerPixel))
-      return FALSE;
+  ret = fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
+                    dpi, dpi, pvfb->paddedWidth, pvfb->bitsPerPixel);
+  
+#ifdef RENDER
+  if (ret && Render) 
+      fbPictureInit(pScreen, 0, 0); 
+#endif
+
+  if (!ret) return FALSE;
 
   pScreen->InstallColormap = vfbInstallColormap;
   pScreen->UninstallColormap = vfbUninstallColormap;
@@ -828,6 +851,17 @@ void InitOutput(ScreenInfo *screenInfo, int argc, char **argv)
     vfbPixmapDepths[vfbScreens[i].depth] = TRUE;
   }
 
+  /* RENDER needs a good set of pixmaps. */
+  if (Render) {
+      vfbPixmapDepths[1] = TRUE;
+      vfbPixmapDepths[4] = TRUE;
+      vfbPixmapDepths[8] = TRUE;
+/*    vfbPixmapDepths[15] = TRUE; */
+      vfbPixmapDepths[16] = TRUE;
+      vfbPixmapDepths[24] = TRUE;
+      vfbPixmapDepths[32] = TRUE;
+  }
+
   for (i = 1; i <= 32; i++)
   {
     if (vfbPixmapDepths[i])