Initialize VNC extension from libvnc.so only once.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@5065 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/unix/xserver/hw/vnc/xf86vncModule.cc b/unix/xserver/hw/vnc/xf86vncModule.cc
index 9352c80..58964cc 100644
--- a/unix/xserver/hw/vnc/xf86vncModule.cc
+++ b/unix/xserver/hw/vnc/xf86vncModule.cc
@@ -90,26 +90,31 @@
 
 static void vncExtensionInitWithParams(INITARGS)
 {
-  rfb::initStdIOLoggers();
-  rfb::LogWriter::setLogParams("*:stderr:30");
-  rfb::Configuration::enableServerParams();
+  static char once = 0;
 
-  for (int scr = 0; scr < screenInfo.numScreens; scr++) {
-    ScrnInfoPtr pScrn = xf86Screens[scr];
+  if (!once) {
+    once++;
+    rfb::initStdIOLoggers();
+    rfb::LogWriter::setLogParams("*:stderr:30");
+    rfb::Configuration::enableServerParams();
 
-    for (ParameterIterator i; i.param; i.next()) {
-      const char *val;
+    for (int scr = 0; scr < screenInfo.numScreens; scr++) {
+      ScrnInfoPtr pScrn = xf86Screens[scr];
+
+      for (ParameterIterator i; i.param; i.next()) {
+        const char *val;
 #if XORG < 112
-      val = xf86FindOptionValue(pScrn->options, i.param->getName());
+        val = xf86FindOptionValue(pScrn->options, i.param->getName());
 #else
-      val = xf86FindOptionValue((XF86OptionPtr)pScrn->options, i.param->getName());
+        val = xf86FindOptionValue((XF86OptionPtr)pScrn->options, i.param->getName());
 #endif
-      if (val)
-        i.param->setParam(val);
+        if (val)
+          i.param->setParam(val);
+      }
     }
-  }
 
-  vncExtensionInit();
+    vncExtensionInit();
+  }
 }
 }