diff options
| author | Aram Drevekenin <aram@poor.dev> | 2021-03-16 16:54:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-16 16:54:07 +0100 |
| commit | 46c9802f6fd7cf37dab6c775554a9b7b9aa39bfd (patch) | |
| tree | 4af7f26eaee7e3dee3b5bd3f6e4174004d72c2e6 /src/client | |
| parent | fix(tabs): delete characters when renaming tab (#226) (diff) | |
| download | sl0ppij-46c9802f6fd7cf37dab6c775554a9b7b9aa39bfd.tar.gz sl0ppij-46c9802f6fd7cf37dab6c775554a9b7b9aa39bfd.tar.xz sl0ppij-46c9802f6fd7cf37dab6c775554a9b7b9aa39bfd.zip | |
Performance: only render panes that should be updated (#234)
* fix(performance): bring back should_render
* style(fmt): rustfmt
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/panes/terminal_pane.rs | 20 | ||||
| -rw-r--r-- | src/client/tab.rs | 4 |
2 files changed, 2 insertions, 22 deletions
diff --git a/src/client/panes/terminal_pane.rs b/src/client/panes/terminal_pane.rs index 4a0321af..9fa70d11 100644 --- a/src/client/panes/terminal_pane.rs +++ b/src/client/panes/terminal_pane.rs @@ -70,13 +70,11 @@ impl Pane for TerminalPane { fn reset_size_and_position_override(&mut self) { self.position_and_size_override = None; self.reflow_lines(); - self.mark_for_rerender(); } fn change_pos_and_size(&mut self, position_and_size: &PositionAndSize) { self.position_and_size.columns = position_and_size.columns; self.position_and_size.rows = position_and_size.rows; self.reflow_lines(); - self.mark_for_rerender(); } fn override_size_and_position(&mut self, x: usize, y: usize, size: &PositionAndSize) { let position_and_size_override = PositionAndSize { @@ -87,7 +85,6 @@ impl Pane for TerminalPane { }; self.position_and_size_override = Some(position_and_size_override); self.reflow_lines(); - self.mark_for_rerender(); } fn handle_event(&mut self, event: VteEvent) { match event { @@ -191,12 +188,7 @@ impl Pane for TerminalPane { self.max_height } fn render(&mut self) -> Option<String> { - // if self.should_render { - if true { - // while checking should_render rather than rendering each pane every time - // is more performant, it causes some problems when the pane to the left should be - // rendered and has wide characters (eg. Chinese characters or emoji) - // as a (hopefully) temporary hack, we render all panes until we find a better solution + if self.should_render || cfg!(test) { let mut vte_output = String::new(); let buffer_lines = &self.read_buffer_as_lines(); let display_cols = self.get_columns(); @@ -238,7 +230,7 @@ impl Pane for TerminalPane { } character_styles.clear(); } - self.mark_for_rerender(); + self.should_render = false; Some(vte_output) } else { None @@ -251,45 +243,37 @@ impl Pane for TerminalPane { self.position_and_size.y += count; self.position_and_size.rows -= count; self.reflow_lines(); - self.mark_for_rerender(); } fn increase_height_down(&mut self, count: usize) { self.position_and_size.rows += count; self.reflow_lines(); - self.mark_for_rerender(); } fn increase_height_up(&mut self, count: usize) { self.position_and_size.y -= count; self.position_and_size.rows += count; self.reflow_lines(); - self.mark_for_rerender(); } fn reduce_height_up(&mut self, count: usize) { self.position_and_size.rows -= count; self.reflow_lines(); - self.mark_for_rerender(); } fn reduce_width_right(&mut self, count: usize) { self.position_and_size.x += count; self.position_and_size.columns -= count; self.reflow_lines(); - self.mark_for_rerender(); } fn reduce_width_left(&mut self, count: usize) { self.position_and_size.columns -= count; self.reflow_lines(); - self.mark_for_rerender(); } fn increase_width_left(&mut self, count: usize) { self.position_and_size.x -= count; self.position_and_size.columns += count; self.reflow_lines(); - self.mark_for_rerender(); } fn increase_width_right(&mut self, count: usize) { self.position_and_size.columns += count; self.reflow_lines(); - self.mark_for_rerender(); } fn scroll_up(&mut self, count: usize) { self.grid.move_viewport_up(count); diff --git a/src/client/tab.rs b/src/client/tab.rs index 1ef0b720..520720c0 100644 --- a/src/client/tab.rs +++ b/src/client/tab.rs @@ -1679,7 +1679,6 @@ impl Tab { } else if self.can_reduce_pane_and_surroundings_right(&active_pane_id, count) { self.reduce_pane_and_surroundings_right(&active_pane_id, count); } - self.render(); } } pub fn resize_left(&mut self) { @@ -1691,7 +1690,6 @@ impl Tab { } else if self.can_reduce_pane_and_surroundings_left(&active_pane_id, count) { self.reduce_pane_and_surroundings_left(&active_pane_id, count); } - self.render(); } } pub fn resize_down(&mut self) { @@ -1703,7 +1701,6 @@ impl Tab { } else if self.can_reduce_pane_and_surroundings_down(&active_pane_id, count) { self.reduce_pane_and_surroundings_down(&active_pane_id, count); } - self.render(); } } pub fn resize_up(&mut self) { @@ -1715,7 +1712,6 @@ impl Tab { } else if self.can_reduce_pane_and_surroundings_up(&active_pane_id, count) { self.reduce_pane_and_surroundings_up(&active_pane_id, count); } - self.render(); } } pub fn move_focus(&mut self) { |
