aboutsummaryrefslogtreecommitdiff
path: root/alacritty_terminal/src/event_loop.rs
diff options
context:
space:
mode:
authorKirill Bulatov <mail4score@gmail.com>2024-03-09 13:32:32 +0200
committerJosh Rahm <rahm@google.com>2024-08-14 15:41:13 -0600
commit79a497b1766ffd7806d020ae37fa9d1a1b379fbf (patch)
treeeae237a4fac4dd6055a19d2bdf701b0be17a1d69 /alacritty_terminal/src/event_loop.rs
parent6104c2f780d6e217b4af40dd6e7bb38bff20e95c (diff)
downloadr-alacritty-79a497b1766ffd7806d020ae37fa9d1a1b379fbf.tar.gz
r-alacritty-79a497b1766ffd7806d020ae37fa9d1a1b379fbf.tar.bz2
r-alacritty-79a497b1766ffd7806d020ae37fa9d1a1b379fbf.zip
Send exit code events on child process exit
Fixes #7753.
Diffstat (limited to 'alacritty_terminal/src/event_loop.rs')
-rw-r--r--alacritty_terminal/src/event_loop.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/alacritty_terminal/src/event_loop.rs b/alacritty_terminal/src/event_loop.rs
index 42025b00..929c642d 100644
--- a/alacritty_terminal/src/event_loop.rs
+++ b/alacritty_terminal/src/event_loop.rs
@@ -259,7 +259,11 @@ where
for event in events.iter() {
match event.key {
tty::PTY_CHILD_EVENT_TOKEN => {
- if let Some(tty::ChildEvent::Exited) = self.pty.next_child_event() {
+ if let Some(tty::ChildEvent::Exited(code)) = self.pty.next_child_event()
+ {
+ if let Some(code) = code {
+ self.event_proxy.send_event(Event::ChildExit(code));
+ }
if self.hold {
// With hold enabled, make sure the PTY is drained.
let _ = self.pty_read(&mut state, &mut buf, pipe.as_mut());
@@ -267,7 +271,6 @@ where
// Without hold, shutdown the terminal.
self.terminal.lock().exit();
}
-
self.event_proxy.send_event(Event::Wakeup);
break 'event_loop;
}