mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-27 07:58:07 -04:00
term: asynchronous client application termination
When the foot window is closed, and we need to terminate the client application, do this in an asynchronous fashion: * Don’t do a blocking call to waitpid(), instead, rely on the reaper callback * Use a timer FD to implement the timeout before sending SIGKILL (instead of using SIGALRM). * Send SIGTERM immediately (we used to *just* close the PTY, and then wait 2 seconds before sending SIGTERM). * Raise the timeout from 2 seconds to 60 Full shutdown now depends on *two* asynchronous tasks - unmapping the window, and waiting for the client application to terminate. Only when *both* of these have completed do we proceed and call term_destroy(), and the user provided shutdown callback.
This commit is contained in:
parent
35041cd431
commit
384b1c330f
3 changed files with 170 additions and 43 deletions
|
|
@ -595,6 +595,7 @@ struct terminal {
|
|||
|
||||
bool is_shutting_down;
|
||||
bool slave_has_been_reaped;
|
||||
int slave_terminate_timeout_fd;
|
||||
int exit_status;
|
||||
void (*shutdown_cb)(void *data, int exit_code);
|
||||
void *shutdown_data;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue