From 0fb59ee4910005b10b30b8705fd17b2c905adb36 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Tue, 7 Sep 2021 22:08:40 -0600 Subject: [PATCH] Hold a weak handle when watching settings in WrapMap --- zed/src/editor/display_map/wrap_map.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/zed/src/editor/display_map/wrap_map.rs b/zed/src/editor/display_map/wrap_map.rs index d9472df752790288f14580a04a8e54333becdc1b..08219826b101c6b40fc1ea281669c887297bde4c 100644 --- a/zed/src/editor/display_map/wrap_map.rs +++ b/zed/src/editor/display_map/wrap_map.rs @@ -80,19 +80,20 @@ impl WrapMap { wrap_width: Option, cx: &mut ModelContext, ) -> Self { - let _watch_settings = cx.spawn({ + let _watch_settings = cx.spawn_weak({ let mut prev_font = ( settings.borrow().buffer_font_size, settings.borrow().buffer_font_family, ); let mut settings = settings.clone(); move |this, mut cx| async move { - let _ = settings.recv().await; while let Some(settings) = settings.recv().await { - let font = (settings.buffer_font_size, settings.buffer_font_family); - if font != prev_font { - prev_font = font; - this.update(&mut cx, |this, cx| this.rewrap(cx)); + if let Some(this) = this.upgrade(&cx) { + let font = (settings.buffer_font_size, settings.buffer_font_family); + if font != prev_font { + prev_font = font; + this.update(&mut cx, |this, cx| this.rewrap(cx)); + } } } }