aboutsummaryrefslogtreecommitdiff
path: root/Cargo.toml
diff options
context:
space:
mode:
authorRachel K <raech.kanati@gmail.com>2019-03-12 19:44:47 +0000
committerChristian Duerr <chrisduerr@users.noreply.github.com>2019-03-12 19:44:47 +0000
commit62c1d999e1361fc68ee4e54865b205415fa0a38d (patch)
treea75dfa202da57d1e7ac9a95b77ee82ef94a49fd6 /Cargo.toml
parente240da9ab3b819a8845ced1ab72d0a4239eac789 (diff)
downloadalacritty-62c1d999e1361fc68ee4e54865b205415fa0a38d.tar.gz
alacritty-62c1d999e1361fc68ee4e54865b205415fa0a38d.zip
Fix signal handling on Unix systems
This removes the the signal handling machinery in tty::unix, and replaces it with functionality from signal-hook, which should be more robust. Signals caught by signal-hook wake up the existing I/O event loop, which then delegates back to the PTY to handle them. In particular, this allows `SIGCHLD` (i.e. child process exits) to shut down the terminal promptly, instead of sometimes leaving the window lingering. Fixes #915. Fixes #1276. Fixes #1313. As a side effect, this fixes a very rare bug on Linux, where a `read` from the PTY on the master side would sometimes "fail" with `EIO` if the child closed the client side at a particular moment. This was subject to a race condition, and was very difficult to trigger in practice.
Diffstat (limited to 'Cargo.toml')
-rw-r--r--Cargo.toml4
1 files changed, 4 insertions, 0 deletions
diff --git a/Cargo.toml b/Cargo.toml
index ce22a3d7..b6a7d975 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -51,6 +51,10 @@ url = "1.7.1"
time = "0.1.40"
crossbeam-channel = "0.3.8"
+[target.'cfg(unix)'.dependencies]
+nix = "0.12"
+signal-hook = { version = "0.1", features = ["mio-support"] }
+
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os="dragonfly", target_os="openbsd"))'.dependencies]
x11-dl = "2"