From eba2eb38b725f2fc500a630e4fc9b3849d87bf14 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Tue, 29 Oct 2024 18:19:23 -0600 Subject: [PATCH] Use unbounded channel to prevent deadlock --- src/main.rs | 6 +++--- src/terminal.rs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8400d13..ce2949d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -352,7 +352,7 @@ pub enum Message { TabNext, TabPrev, TermEvent(pane_grid::Pane, segmented_button::Entity, TermEvent), - TermEventTx(mpsc::Sender<(pane_grid::Pane, segmented_button::Entity, TermEvent)>), + TermEventTx(mpsc::UnboundedSender<(pane_grid::Pane, segmented_button::Entity, TermEvent)>), ToggleContextPage(ContextPage), UpdateDefaultProfile((bool, ProfileId)), UseBrightBold(bool), @@ -411,7 +411,7 @@ pub struct App { find: bool, find_search_id: widget::Id, find_search_value: String, - term_event_tx_opt: Option>, + term_event_tx_opt: Option>, startup_options: Option, term_config: term::Config, color_scheme_errors: Vec, @@ -2791,7 +2791,7 @@ impl Application for App { Subscription::run_with_id( TypeId::of::(), stream::channel(100, |mut output| async move { - let (event_tx, mut event_rx) = mpsc::channel(100); + let (event_tx, mut event_rx) = mpsc::unbounded_channel(); 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 87541cd..6f89339 100644 --- a/src/terminal.rs +++ b/src/terminal.rs @@ -85,13 +85,13 @@ impl From for WindowSize { pub struct EventProxy( pane_grid::Pane, segmented_button::Entity, - mpsc::Sender<(pane_grid::Pane, segmented_button::Entity, Event)>, + mpsc::UnboundedSender<(pane_grid::Pane, segmented_button::Entity, Event)>, ); impl EventListener for EventProxy { fn send_event(&self, event: Event) { //TODO: handle error - let _ = self.2.blocking_send((self.0, self.1, event)); + let _ = self.2.send((self.0, self.1, event)); } } @@ -221,7 +221,7 @@ impl Terminal { pub fn new( pane: pane_grid::Pane, entity: segmented_button::Entity, - event_tx: mpsc::Sender<(pane_grid::Pane, segmented_button::Entity, Event)>, + event_tx: mpsc::UnboundedSender<(pane_grid::Pane, segmented_button::Entity, Event)>, config: Config, options: Options, app_config: &AppConfig,