diff options
| author | Daniel Jankowski <daniel.jankowski@rub.de> | 2024-03-13 17:22:30 +0100 |
|---|---|---|
| committer | Daniel Jankowski <daniel.jankowski@rub.de> | 2024-03-13 17:22:30 +0100 |
| commit | ded18096adbafc3e56fb229e9e83fbb35fd521c8 (patch) | |
| tree | 8a89a2b7bd424f7cbad2c24343594292acd7e0c8 /src/render.rs | |
| parent | fix: admonition in README (diff) | |
| download | sl0pstatus-ded18096adbafc3e56fb229e9e83fbb35fd521c8.tar.gz sl0pstatus-ded18096adbafc3e56fb229e9e83fbb35fd521c8.tar.xz sl0pstatus-ded18096adbafc3e56fb229e9e83fbb35fd521c8.zip | |
feat(dev): add tracing feature
Diffstat (limited to '')
| -rw-r--r-- | src/render.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/render.rs b/src/render.rs index c407a6a..cef70d4 100644 --- a/src/render.rs +++ b/src/render.rs @@ -121,15 +121,19 @@ impl FormattedPart { ) } + #[tracing::instrument(skip_all)] pub fn format_string_with_widgets( &mut self, widgets: &BTreeMap<String, Arc<dyn Widget>>, state: &ZellijState, ) -> String { let skip_cache = self.cache_mask & UpdateEventMask::Always as u8 != 0; + if !skip_cache && self.cache_mask & state.cache_mask == 0 && !self.cache.is_empty() { + tracing::debug!(msg = "hit", typ = "format_string", format = self.content); return self.cached_content.to_owned(); } + tracing::debug!(msg = "miss", typ = "format_string", format = self.content); let mut output = self.content.clone(); @@ -143,12 +147,22 @@ impl FormattedPart { } let widget_mask = event_mask_from_widget_name(widget_key_name); - if !skip_cache && widget_mask & state.cache_mask == 0 { + let skip_widget_cache = widget_mask & UpdateEventMask::Always as u8 != 0; + if !skip_widget_cache && widget_mask & state.cache_mask == 0 { if let Some(res) = self.cache.get(widget_key) { + tracing::debug!(msg = "hit", typ = "widget", widget = widget_key); output = output.replace(match_name, res); continue; } } + + tracing::debug!( + msg = "miss", + typ = "widget", + widget = widget_key, + mask = widget_mask & state.cache_mask, + skip_cache = skip_cache, + ); let result = match widgets.get(widget_key_name) { Some(widget) => widget.process(widget_key, state), |
