]> git.vomp.tv Git - vompclient-marten.git/commitdiff
Two segfaults fixed for when there are multiple servers
authorChris Tallon <chris@vomp.tv>
Sun, 2 Oct 2005 14:39:38 +0000 (14:39 +0000)
committerChris Tallon <chris@vomp.tv>
Sun, 2 Oct 2005 14:39:38 +0000 (14:39 +0000)
main.cc
vconnect.cc
view.h
vserverselect.cc

diff --git a/main.cc b/main.cc
index 490c8cadb47d9454e5921da3970d5ec5117da505..d080782c78830cce98042659fe61adf136954085 100644 (file)
--- a/main.cc
+++ b/main.cc
@@ -87,6 +87,27 @@ int main(int argc, char** argv)
 
   logger->log("Core", Log::INFO, "Starting up...");
 
+  // Daemonize if not -d
+
+  if (!debugEnabled)
+  {
+    // Fork away
+    pid_t forkTest = fork();
+    if (forkTest == -1)
+    { printf("Cannot fork (1).\n"); exit(1); }
+    if (forkTest != 0) _exit(0); // PID returned, I am the parent
+    // otherwise, I am the child
+    setsid();
+    forkTest = fork();
+    if (forkTest == -1)
+    { printf("Cannot fork (2).\n"); exit(1); }
+    if (forkTest != 0) _exit(0); // PID returned, I am the parent
+    // otherwise, I am the child
+    close(0);
+    close(1);
+    close(2);
+  }
+
   // Set up signal handling ------------------------------------------------------------------------------------------
 
   sighandler_t sigtest;
index 562d57a6cc03c3e3014cc65c1bca6e26863ee551..0b22d324d191e6a9f392d258c6e6d0a742265050 100644 (file)
@@ -99,6 +99,13 @@ void VConnect::threadMethod()
       threadWaitForSignal();
     }
 
+    if (!irun)
+    {
+      for(UINT k = 0; k < serverIPs.size(); k++) delete[] serverIPs[k];
+      serverIPs.clear();
+      return;
+    }
+
     logger->log("VConnect", Log::NOTICE, "Connecting to server at %s", serverIPs[selectedServer]);
     vdr->setServerIP(serverIPs[selectedServer]);
 
diff --git a/view.h b/view.h
index c53a17fcad113acae0be81a2dffa8ab2eeffb332..430e9b0ab1e2ba882cde0940b83590d9596980e1 100644 (file)
--- a/view.h
+++ b/view.h
@@ -59,12 +59,11 @@ class View : public Box
 
     Colour backgroundColour;
 
+    char* titleText;
     UCHAR titleBarOn;
     UCHAR borderOn;
 
-
   protected:
-    char* titleText;//FIXME move this back to private
     Colour titleBarColour;
     View* parent;
 };
index a0055c55fa96c2ee7a14bebe43e77c910d11aebb..91fb97f0d2300d23fe8c07c431f26a7b25fd7574 100644 (file)
@@ -42,7 +42,8 @@ VServerSelect::VServerSelect(std::vector<char*>* serverIPs)
   setTitleBarColour(Colour::TITLEBARBACKGROUND);
   setTitleText("Choose a VDR server");
 
-  sl.setSurfaceOffset(30 + 5, 10);
+  sl.setSurface(surface);
+  sl.setSurfaceOffset(10, 30 + 5);
   sl.setDimensions(width - 20, height - 30 - 15);
 
   sl.addOption((*serverIPs)[0], 1);