mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-22 02:01:55 +07:00
Extract Niri::update_render_elements()
This commit is contained in:
@@ -222,7 +222,7 @@ impl TestCase for Layout {
|
|||||||
renderer: &mut GlesRenderer,
|
renderer: &mut GlesRenderer,
|
||||||
_size: Size<i32, Physical>,
|
_size: Size<i32, Physical>,
|
||||||
) -> Vec<Box<dyn RenderElement<GlesRenderer>>> {
|
) -> Vec<Box<dyn RenderElement<GlesRenderer>>> {
|
||||||
self.layout.update_render_elements(&self.output);
|
self.layout.update_render_elements(Some(&self.output));
|
||||||
self.layout
|
self.layout
|
||||||
.monitor_for_output(&self.output)
|
.monitor_for_output(&self.output)
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
|||||||
+2
-21
@@ -1800,7 +1800,7 @@ impl<W: LayoutElement> Layout<W> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_render_elements(&mut self, output: &Output) {
|
pub fn update_render_elements(&mut self, output: Option<&Output>) {
|
||||||
let _span = tracy_client::span!("Layout::update_render_elements");
|
let _span = tracy_client::span!("Layout::update_render_elements");
|
||||||
|
|
||||||
let MonitorSet::Normal {
|
let MonitorSet::Normal {
|
||||||
@@ -1814,31 +1814,12 @@ impl<W: LayoutElement> Layout<W> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
for (idx, mon) in monitors.iter_mut().enumerate() {
|
for (idx, mon) in monitors.iter_mut().enumerate() {
|
||||||
if mon.output == *output {
|
if output.map_or(true, |output| mon.output == *output) {
|
||||||
mon.update_render_elements(idx == *active_monitor_idx);
|
mon.update_render_elements(idx == *active_monitor_idx);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_render_elements_all(&mut self) {
|
|
||||||
let _span = tracy_client::span!("Layout::update_render_elements_all");
|
|
||||||
|
|
||||||
let MonitorSet::Normal {
|
|
||||||
monitors,
|
|
||||||
active_monitor_idx,
|
|
||||||
..
|
|
||||||
} = &mut self.monitor_set
|
|
||||||
else {
|
|
||||||
error!("update_render_elements_all called with no monitors");
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
for (idx, mon) in monitors.iter_mut().enumerate() {
|
|
||||||
mon.update_render_elements(idx == *active_monitor_idx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn update_shaders(&mut self) {
|
pub fn update_shaders(&mut self) {
|
||||||
match &mut self.monitor_set {
|
match &mut self.monitor_set {
|
||||||
MonitorSet::Normal { monitors, .. } => {
|
MonitorSet::Normal { monitors, .. } => {
|
||||||
|
|||||||
+10
-6
@@ -1278,7 +1278,7 @@ impl State {
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
self.niri.layout.update_render_elements_all();
|
self.niri.update_render_elements(None);
|
||||||
|
|
||||||
let Some(screenshots) = self
|
let Some(screenshots) = self
|
||||||
.backend
|
.backend
|
||||||
@@ -2853,6 +2853,10 @@ impl Niri {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn update_render_elements(&mut self, output: Option<&Output>) {
|
||||||
|
self.layout.update_render_elements(output);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn render<R: NiriRenderer>(
|
pub fn render<R: NiriRenderer>(
|
||||||
&self,
|
&self,
|
||||||
renderer: &mut R,
|
renderer: &mut R,
|
||||||
@@ -3066,7 +3070,7 @@ impl Niri {
|
|||||||
// Also keep redrawing during a screen transition.
|
// Also keep redrawing during a screen transition.
|
||||||
state.unfinished_animations_remain |= state.screen_transition.is_some();
|
state.unfinished_animations_remain |= state.screen_transition.is_some();
|
||||||
|
|
||||||
self.layout.update_render_elements(output);
|
self.update_render_elements(Some(output));
|
||||||
|
|
||||||
// Render.
|
// Render.
|
||||||
res = backend.render(self, output, target_presentation_time);
|
res = backend.render(self, output, target_presentation_time);
|
||||||
@@ -3891,7 +3895,7 @@ impl Niri {
|
|||||||
"screencopy output missing"
|
"screencopy output missing"
|
||||||
);
|
);
|
||||||
|
|
||||||
self.layout.update_render_elements(output);
|
self.update_render_elements(Some(output));
|
||||||
|
|
||||||
let elements = self.render(
|
let elements = self.render(
|
||||||
renderer,
|
renderer,
|
||||||
@@ -4135,7 +4139,7 @@ impl Niri {
|
|||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
let _span = tracy_client::span!("Niri::screenshot");
|
let _span = tracy_client::span!("Niri::screenshot");
|
||||||
|
|
||||||
self.layout.update_render_elements(output);
|
self.update_render_elements(Some(output));
|
||||||
|
|
||||||
let size = output.current_mode().unwrap().size;
|
let size = output.current_mode().unwrap().size;
|
||||||
let transform = output.current_transform();
|
let transform = output.current_transform();
|
||||||
@@ -4286,7 +4290,7 @@ impl Niri {
|
|||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
let _span = tracy_client::span!("Niri::screenshot_all_outputs");
|
let _span = tracy_client::span!("Niri::screenshot_all_outputs");
|
||||||
|
|
||||||
self.layout.update_render_elements_all();
|
self.update_render_elements(None);
|
||||||
|
|
||||||
let outputs: Vec<_> = self.global_space.outputs().cloned().collect();
|
let outputs: Vec<_> = self.global_space.outputs().cloned().collect();
|
||||||
|
|
||||||
@@ -4541,7 +4545,7 @@ impl Niri {
|
|||||||
pub fn do_screen_transition(&mut self, renderer: &mut GlesRenderer, delay_ms: Option<u16>) {
|
pub fn do_screen_transition(&mut self, renderer: &mut GlesRenderer, delay_ms: Option<u16>) {
|
||||||
let _span = tracy_client::span!("Niri::do_screen_transition");
|
let _span = tracy_client::span!("Niri::do_screen_transition");
|
||||||
|
|
||||||
self.layout.update_render_elements_all();
|
self.update_render_elements(None);
|
||||||
|
|
||||||
let textures: Vec<_> = self
|
let textures: Vec<_> = self
|
||||||
.output_state
|
.output_state
|
||||||
|
|||||||
Reference in New Issue
Block a user