Added vfbCloseScreen. Reindented vfbScreenInfo.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@223 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/xc/programs/Xserver/vnc/Xvnc/xvnc.cc b/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
index 91a654f..fc1499a 100644
--- a/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
+++ b/xc/programs/Xserver/vnc/Xvnc/xvnc.cc
@@ -108,24 +108,35 @@
 
 typedef struct
 {
-  int scrnum;
-  int width;
-  int paddedBytesWidth;
-  int paddedWidth;
-  int height;
-  int depth;
-  int bitsPerPixel;
-  int sizeInBytes;
-  int ncolors;
-  char *pfbMemory;
-  XWDColor *pXWDCmap;
-  XWDFileHeader *pXWDHeader;
-  Pixel blackPixel;
-  Pixel whitePixel;
-  unsigned int lineBias;
-  Bool pixelFormatDefined;
-  Bool rgbNotBgr;
-  int redBits, greenBits, blueBits;
+    int scrnum;
+    int width;
+    int paddedBytesWidth;
+    int paddedWidth;
+    int height;
+    int depth;
+    int bitsPerPixel;
+    int sizeInBytes;
+    int ncolors;
+    char *pfbMemory;
+    XWDColor *pXWDCmap;
+    XWDFileHeader *pXWDHeader;
+    Pixel blackPixel;
+    Pixel whitePixel;
+    unsigned int lineBias;
+    CloseScreenProcPtr closeScreen;
+
+#ifdef HAS_MMAP
+    int mmap_fd;
+    char mmap_file[MAXPATHLEN];
+#endif
+
+#ifdef HAS_SHM
+    int shmid;
+#endif
+
+    Bool pixelFormatDefined;
+    Bool rgbNotBgr;
+    int redBits, greenBits, blueBits;
 
 } vfbScreenInfo, *vfbScreenInfoPtr;
 
@@ -905,6 +916,24 @@
     miPointerWarpCursor
 };
 
+static Bool
+vfbCloseScreen(int index, ScreenPtr pScreen)
+{
+    vfbScreenInfoPtr pvfb = &vfbScreens[index];
+    int i;
+ 
+    pScreen->CloseScreen = pvfb->closeScreen;
+
+    /*
+     * XXX probably lots of stuff to clean.  For now,
+     * clear InstalledMaps[] so that server reset works correctly.
+     */
+    for (i = 0; i < MAXSCREENS; i++)
+	InstalledMaps[i] = NULL;
+
+    return pScreen->CloseScreen(index, pScreen);
+}
+
 static Bool vfbScreenInit(int index, ScreenPtr pScreen, int argc, char** argv)
 {
   vfbScreenInfoPtr pvfb = &vfbScreens[index];