From fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Thu, 14 Nov 2024 10:24:04 +0300 Subject: niri: Extract render_layer() --- src/niri.rs | 53 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/niri.rs b/src/niri.rs index ee3116d0..469d6ab8 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -41,8 +41,8 @@ use smithay::desktop::utils::{ under_from_surface_tree, update_surface_primary_scanout_output, OutputPresentationFeedback, }; use smithay::desktop::{ - layer_map_for_output, LayerSurface, PopupGrab, PopupManager, PopupUngrabStrategy, Space, - Window, WindowSurfaceType, + layer_map_for_output, LayerMap, LayerSurface, PopupGrab, PopupManager, PopupUngrabStrategy, + Space, Window, WindowSurfaceType, }; use smithay::input::keyboard::Layout as KeyboardLayout; use smithay::input::pointer::{CursorIcon, CursorImageAttributes, CursorImageStatus, MotionEvent}; @@ -3110,25 +3110,7 @@ impl Niri { // Get layer-shell elements. let layer_map = layer_map_for_output(output); let mut extend_from_layer = |elements: &mut Vec>, layer| { - let iter = layer_map - .layers_on(layer) - .filter_map(|surface| { - layer_map - .layer_geometry(surface) - .map(|geo| (geo.loc, surface)) - }) - .flat_map(|(loc, surface)| { - surface - .render_elements( - renderer, - loc.to_physical_precise_round(output_scale), - output_scale, - 1., - ) - .into_iter() - .map(OutputRenderElements::Wayland) - }); - elements.extend(iter); + self.render_layer(renderer, output_scale, &layer_map, layer, elements); }; // The upper layer-shell elements go next. @@ -3159,6 +3141,35 @@ impl Niri { elements } + fn render_layer( + &self, + renderer: &mut R, + output_scale: Scale, + layer_map: &LayerMap, + layer: Layer, + elements: &mut Vec>, + ) { + let iter = layer_map + .layers_on(layer) + .filter_map(|surface| { + layer_map + .layer_geometry(surface) + .map(|geo| (geo.loc, surface)) + }) + .flat_map(|(loc, surface)| { + surface + .render_elements( + renderer, + loc.to_physical_precise_round(output_scale), + output_scale, + 1., + ) + .into_iter() + .map(OutputRenderElements::Wayland) + }); + elements.extend(iter); + } + fn redraw(&mut self, backend: &mut Backend, output: &Output) { let _span = tracy_client::span!("Niri::redraw"); -- cgit