aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-11-14 10:24:04 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-11-14 10:24:04 +0300
commitfbbd3ba349223f7cc4ebeaa397f7c48e880a7c30 (patch)
tree8c51ac51bb053c078b92d09102a8dd0f32771c18
parent10286391868a6591650c66df7987bca8271dcda1 (diff)
downloadniri-fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30.tar.gz
niri-fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30.tar.bz2
niri-fbbd3ba349223f7cc4ebeaa397f7c48e880a7c30.zip
niri: Extract render_layer()
-rw-r--r--src/niri.rs53
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");