]> source.dussan.org Git - tigervnc.git/commitdiff
Refuse to start Xvnc if we failed to initialise a screen
authorPierre Ossman <ossman@cendio.se>
Mon, 14 Sep 2015 12:35:05 +0000 (14:35 +0200)
committerPierre Ossman <ossman@cendio.se>
Mon, 14 Sep 2015 12:35:05 +0000 (14:35 +0200)
Starting Xvnc without having any VNC functionality is pretty much
pointless. So terminate when that happens, making the situation easier
to detect for startup scripts.

unix/xserver/hw/vnc/vncExtInit.cc
unix/xserver/hw/vnc/vncExtInit.h
unix/xserver/hw/vnc/xvnc.c

index e307e31947068669dcfac5b7010b6a9d969eabe4..d9f989a9d7bf9ee1b7ea451fd837e148e2c3fe52 100644 (file)
@@ -205,6 +205,11 @@ void vncExtensionInit(void)
   vncRegisterBlockHandlers();
 }
 
+int vncExtensionIsActive(int scrIdx)
+{
+  return (desktop[scrIdx] != NULL);
+}
+
 void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout)
 {
   for (int scr = 0; scr < vncGetScreenCount(); scr++)
index 65cbbe4096056ef7f7557b28a26916e96f0e3207..6430ac056e3d39a88c91c6d6f568684ca50a109f 100644 (file)
@@ -50,6 +50,7 @@ extern int vncFbstride[];
 extern int vncInetdSock;
 
 void vncExtensionInit(void);
+int vncExtensionIsActive(int scrIdx);
 
 void vncCallReadBlockHandlers(fd_set * fds, struct timeval ** timeout);
 void vncCallReadWakeupHandlers(fd_set * fds, int nfds);
index cac2aeeb0f20f2dfc13b19f690243d086cf5a042..ee3dab251067c847dd56125f2defa7f4d10c8591 100644 (file)
@@ -1744,6 +1744,11 @@ void ProcessInputEvents(void)
 
 void InitInput(int argc, char *argv[])
 {
+  int i;
+  for (i = 0;i < screenInfo.numScreens;i++) {
+    if (!vncExtensionIsActive(i))
+        FatalError("failed to activate VNC extension for one or more screens");
+  }
   mieqInit ();
 }