diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-11-14 10:24:04 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-11-14 10:24:04 +0300 |
| commit | fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30 (patch) | |
| tree | 8c51ac51bb053c078b92d09102a8dd0f32771c18 /src | |
| parent | 10286391868a6591650c66df7987bca8271dcda1 (diff) | |
| download | niri-fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30.tar.gz niri-fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30.tar.bz2 niri-fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30.zip | |
niri: Extract render_layer()
Diffstat (limited to 'src')
| -rw-r--r-- | src/niri.rs | 53 |
1 files 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<OutputRenderElements<R>>, 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<R: NiriRenderer>( + &self, + renderer: &mut R, + output_scale: Scale<f64>, + layer_map: &LayerMap, + layer: Layer, + elements: &mut Vec<OutputRenderElements<R>>, + ) { + 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"); |
