summaryrefslogtreecommitdiffstats
path: root/alacritty_terminal
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2020-12-17 00:39:15 +0000
committerGitHub <noreply@github.com>2020-12-17 00:39:15 +0000
commitbb4fddd59365ec9bbff43b48da5fca23e9c55a99 (patch)
tree9a99d6fa07db2a1ec9a886faa650f046c2dff636 /alacritty_terminal
parentb4dccbe5261a11a7e9587521a96a4098a8754006 (diff)
Fix draining of PTY when holding on exit
Fixes #4189.
Diffstat (limited to 'alacritty_terminal')
-rw-r--r--alacritty_terminal/src/event_loop.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/alacritty_terminal/src/event_loop.rs b/alacritty_terminal/src/event_loop.rs
index 035c1e73..f3d4d353 100644
--- a/alacritty_terminal/src/event_loop.rs
+++ b/alacritty_terminal/src/event_loop.rs
@@ -342,9 +342,14 @@ where
token if token == self.pty.child_event_token() => {
if let Some(tty::ChildEvent::Exited) = self.pty.next_child_event() {
- if !self.hold {
+ if self.hold {
+ // With hold enabled, make sure the PTY is drained.
+ let _ = self.pty_read(&mut state, &mut buf, pipe.as_mut());
+ } else {
+ // Without hold, shutdown the terminal.
self.terminal.lock().exit();
}
+
self.event_proxy.send_event(Event::Wakeup);
break 'event_loop;
}