]> skyeroc.xyz Git - dgamelaunch/commitdiff
More signals fixes &c. (Now it seems to work)
authorPasi Kallinen <paxed@alt.org>
Tue, 18 May 2010 16:32:04 +0000 (16:32 +0000)
committerPasi Kallinen <paxed@alt.org>
Tue, 18 May 2010 16:32:04 +0000 (16:32 +0000)
git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@572 db0b04b0-f4d1-0310-9a6d-de3e77497b0e

dgamelaunch.c
dgl-common.c
ttyrec.c

index 174b5df1ae5ca4536028d6a482d560037c2bc8a6..f551f92504ef61ffc6cdd479193cb46a24ce84f6 100644 (file)
@@ -2277,7 +2277,6 @@ runmenuloop(struct dg_menu *menu)
     ban.lines = NULL;
     ban.len = 0;
 
-    idle_alarm_set_enabled(1);
     loadbanner(menu->banner_fn, &ban);
     while (1) {
        if (doclear) {
@@ -2545,11 +2544,15 @@ main (int argc, char** argv)
   initcurses ();
   term_resize_check();
 
+  idle_alarm_set_enabled(1);
+
   while (1) {
       if (runmenuloop(dgl_find_menu(loggedin ? "mainmenu_user" : "mainmenu_anon")))
          break;
   }
 
+  idle_alarm_set_enabled(0);
+
   /* NOW we can safely kill this */
   freefile ();
 
index 4e3bd3f0869952ec7e6393dfc92177fc5c467a6f..d004f4a14b54281bf430ef05b97755f4ba66352b 100644 (file)
@@ -273,14 +273,13 @@ dgl_exec_cmdqueue(struct dg_cmdpart *queue, int game, struct dg_user *me)
                    debug_write("exec-command fork failed");
                    graceful_exit(114);
                } else if (child == 0) {
-                   signals_block();
                    execvp(p1, myargv);
-                   signals_release();
                    exit(0);
                } else
                    waitpid(child, NULL, 0);
                idle_alarm_set_enabled(1);
                initcurses();
+               clear();
                refresh();
                check_retard(1);
            }
@@ -380,6 +379,8 @@ dgl_exec_cmdqueue(struct dg_cmdpart *queue, int game, struct dg_user *me)
 
                            setproctitle ("%s", me->username);
                            initcurses ();
+                           clear();
+                           refresh();
                            check_retard(1); /* reset retard counter */
                        }
                        break;
index 225b4f6e4a28a1ab41ccee5b6686f91eca112a60..2056c85a60d07d3fb2285595af38ea6de221bc42 100644 (file)
--- a/ttyrec.c
+++ b/ttyrec.c
@@ -239,16 +239,16 @@ finish (int sig)
 
   if (die)
   {
-      if (wait_for_menu && input_child)
+      if (input_child)
       {
          // Need to kill the child that's writing input to pty.
          kill(input_child, SIGTERM);
          while ((pid = wait3(&status, WNOHANG, 0)) > 0);
-         wait_for_menu = 0;
       }
       else
          done ();
   }
+  wait_for_menu = 0;
 }
 
 void
@@ -408,4 +408,5 @@ remove_ipfile (void)
        free(ipfile);
        ipfile = NULL;
     }
+    signal(SIGALRM, SIG_IGN);
 }