]> Dogcows Code - chaz/openbox/commitdiff
Fixed child wait.
authorScott Moynes <smoynes@nexus.carleton.ca>
Fri, 16 May 2003 19:12:06 +0000 (19:12 +0000)
committerScott Moynes <smoynes@nexus.carleton.ca>
Fri, 16 May 2003 19:12:06 +0000 (19:12 +0000)
plugins/menu/timed_menu.c

index ee1de79393982d2291aa3c4c5b84488b6d3656f5..df2acbb2464cfb45a50501694e8e901acad16699 100644 (file)
@@ -31,6 +31,7 @@ typedef struct {
     char *buf;
     unsigned long buflen;
     int fd;
+    pid_t pid;
 } Timed_Menu_Data;
 
 
@@ -54,7 +55,10 @@ void timed_menu_clean_up(Menu *m) {
         TIMED_MENU_DATA(m)->fd = -1;
     }
 
-    /* child is reaped by glib ? */
+    if (TIMED_MENU_DATA(m)->pid != -1) {
+        waitpid(TIMED_MENU_DATA(m)->pid, NULL, 0);
+        TIMED_MENU_DATA(m)->pid = -1;
+    }
 }
 
 void timed_menu_read_pipe(int fd, Menu *menu)
@@ -134,7 +138,7 @@ void timed_menu_timeout_handler(Menu *data)
                         NULL,
                         G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
                         NULL,
-                        NULL,
+                        &TIMED_MENU_DATA(data)->pid,                        
                         NULL,
                         NULL,
                         &child_stdout,
@@ -168,6 +172,7 @@ void *plugin_create()
     d->buf = NULL;
     d->buflen = 0;
     d->fd = -1;
+    d->pid = -1;
     
     m->plugin_data = (void *)d;
 
This page took 0.024844 seconds and 4 git commands to generate.