From 21682acfae58003b673b9ccdd689a9abf116de71 Mon Sep 17 00:00:00 2001 From: Marshall Humble <11792578+marshallhumble@users.noreply.github.com> Date: Thu, 7 May 2026 19:39:27 -0500 Subject: [PATCH] bound the event channel to prevent unbounded RSS growth --- src/main.rs | 6 +++--- src/terminal.rs | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index e8469d3..1466251 100644 --- a/src/main.rs +++ b/src/main.rs @@ -438,7 +438,7 @@ pub enum Message { TabNext, TabPrev, TermEvent(pane_grid::Pane, segmented_button::Entity, TermEvent), - TermEventTx(mpsc::UnboundedSender<(pane_grid::Pane, segmented_button::Entity, TermEvent)>), + TermEventTx(mpsc::Sender<(pane_grid::Pane, segmented_button::Entity, TermEvent)>), ToggleFullscreen, ToggleContextPage(ContextPage), UpdateDefaultProfile((bool, ProfileId)), @@ -503,7 +503,7 @@ pub struct App { find_search_id: widget::Id, find_search_value: String, term_event_tx_opt: - Option>, + Option>, startup_options: Option, term_config: term::Config, color_scheme_errors: Vec, @@ -3623,7 +3623,7 @@ impl Application for App { stream::channel( 100, |mut output: iced::futures::channel::mpsc::Sender| async move { - let (event_tx, mut event_rx) = mpsc::unbounded_channel(); + let (event_tx, mut event_rx) = mpsc::channel(1024); output.send(Message::TermEventTx(event_tx)).await.unwrap(); while let Some((pane, entity, event)) = event_rx.recv().await { diff --git a/src/terminal.rs b/src/terminal.rs index 81b9f50..d2b5efa 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -99,13 +99,13 @@ impl From for WindowSize { pub struct EventProxy( pane_grid::Pane, segmented_button::Entity, - mpsc::UnboundedSender<(pane_grid::Pane, segmented_button::Entity, Event)>, -); + mpsc::Sender<(pane_grid::Pane, segmented_button::Entity, Event)>, + ); impl EventListener for EventProxy { fn send_event(&self, event: Event) { //TODO: handle error - let _ = self.2.send((self.0, self.1, event)); + let _ = self.2.blocking_send((self.0, self.1, event)); } } @@ -270,7 +270,7 @@ impl Terminal { pub fn new( pane: pane_grid::Pane, entity: segmented_button::Entity, - event_tx: mpsc::UnboundedSender<(pane_grid::Pane, segmented_button::Entity, Event)>, + event_tx: mpsc::Sender<(pane_grid::Pane, segmented_button::Entity, Event)>, config: Config, options: Options, app_config: &AppConfig,