diff options
Diffstat (limited to 'alacritty/src/display/mod.rs')
-rw-r--r-- | alacritty/src/display/mod.rs | 18 |
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, |