aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/display/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'alacritty/src/display/mod.rs')
-rw-r--r--alacritty/src/display/mod.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/alacritty/src/display/mod.rs b/alacritty/src/display/mod.rs
index f1757ae6..4d9c1540 100644
--- a/alacritty/src/display/mod.rs
+++ b/alacritty/src/display/mod.rs
@@ -588,11 +588,10 @@ impl Display {
});
}
+ // XXX: this function must not call to any `OpenGL` related tasks. Renderer updates are
+ // performed in [`Self::process_renderer_update`] right befor drawing.
+ //
/// Process update events.
- ///
- /// XXX: this function must not call to any `OpenGL` related tasks. Only logical update
- /// of the state is being performed here. Rendering update takes part right before the
- /// actual rendering.
pub fn handle_update<T>(
&mut self,
terminal: &mut Term<T>,
@@ -666,14 +665,11 @@ impl Display {
self.size_info = new_size;
}
+ // NOTE: Renderer updates are split off, since platforms like Wayland require resize and other
+ // OpenGL operations to be performed right before rendering. Otherwise they could lock the
+ // back buffer and render with the previous state. This also solves flickering during resizes.
+ //
/// Update the state of the renderer.
- ///
- /// NOTE: The update to the renderer is split from the display update on purpose, since
- /// on some platforms, like Wayland, resize and other OpenGL operations must be performed
- /// right before rendering, otherwise they could lock the back buffer resulting in
- /// rendering with the buffer of old size.
- ///
- /// This also resolves any flickering, since the resize is now synced with frame callbacks.
pub fn process_renderer_update(&mut self) {
let renderer_update = match self.pending_renderer_update.take() {
Some(renderer_update) => renderer_update,