aboutsummaryrefslogtreecommitdiff
path: root/src/backend/winit.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-03-27 09:46:18 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-03-27 09:46:18 +0400
commite276c906bf4bea27dc8173815ff373d04c20caaf (patch)
tree6843e6ab8244f296b89d54d53b2ebfd6e1a16592 /src/backend/winit.rs
parent571768af433b0fdc653f44b7dee0ad2dda6fe344 (diff)
downloadniri-e276c906bf4bea27dc8173815ff373d04c20caaf.tar.gz
niri-e276c906bf4bea27dc8173815ff373d04c20caaf.tar.bz2
niri-e276c906bf4bea27dc8173815ff373d04c20caaf.zip
Expose more info in DisplayConfig impl
Needed for the new xdp-gnome.
Diffstat (limited to 'src/backend/winit.rs')
-rw-r--r--src/backend/winit.rs47
1 files changed, 20 insertions, 27 deletions
diff --git a/src/backend/winit.rs b/src/backend/winit.rs
index b2ab8c33..96c0cdf8 100644
--- a/src/backend/winit.rs
+++ b/src/backend/winit.rs
@@ -17,7 +17,7 @@ use smithay::reexports::wayland_protocols::wp::presentation_time::server::wp_pre
use smithay::reexports::winit::dpi::LogicalSize;
use smithay::reexports::winit::window::WindowBuilder;
-use super::RenderResult;
+use super::{IpcOutputMap, RenderResult};
use crate::niri::{Niri, RedrawState, State};
use crate::render_helpers::{shaders, RenderTarget};
use crate::utils::get_monotonic_time;
@@ -27,8 +27,7 @@ pub struct Winit {
output: Output,
backend: WinitGraphicsBackend<GlesRenderer>,
damage_tracker: OutputDamageTracker,
- ipc_outputs: Arc<Mutex<HashMap<String, niri_ipc::Output>>>,
- enabled_outputs: Arc<Mutex<HashMap<String, Output>>>,
+ ipc_outputs: Arc<Mutex<IpcOutputMap>>,
}
impl Winit {
@@ -62,23 +61,21 @@ impl Winit {
let physical_properties = output.physical_properties();
let ipc_outputs = Arc::new(Mutex::new(HashMap::from([(
"winit".to_owned(),
- niri_ipc::Output {
- name: output.name(),
- make: physical_properties.make,
- model: physical_properties.model,
- physical_size: None,
- modes: vec![niri_ipc::Mode {
- width: backend.window_size().w.clamp(0, u16::MAX as i32) as u16,
- height: backend.window_size().h.clamp(0, u16::MAX as i32) as u16,
- refresh_rate: 60_000,
- }],
- current_mode: Some(0),
- },
- )])));
-
- let enabled_outputs = Arc::new(Mutex::new(HashMap::from([(
- "winit".to_owned(),
- output.clone(),
+ (
+ niri_ipc::Output {
+ name: output.name(),
+ make: physical_properties.make,
+ model: physical_properties.model,
+ physical_size: None,
+ modes: vec![niri_ipc::Mode {
+ width: backend.window_size().w.clamp(0, u16::MAX as i32) as u16,
+ height: backend.window_size().h.clamp(0, u16::MAX as i32) as u16,
+ refresh_rate: 60_000,
+ }],
+ current_mode: Some(0),
+ },
+ Some(output.clone()),
+ ),
)])));
let damage_tracker = OutputDamageTracker::from_output(&output);
@@ -99,9 +96,10 @@ impl Winit {
{
let mut ipc_outputs = winit.ipc_outputs.lock().unwrap();
- let mode = &mut ipc_outputs.get_mut("winit").unwrap().modes[0];
+ let mode = &mut ipc_outputs.get_mut("winit").unwrap().0.modes[0];
mode.width = size.w.clamp(0, u16::MAX as i32) as u16;
mode.height = size.h.clamp(0, u16::MAX as i32) as u16;
+ state.niri.ipc_outputs_changed = true;
}
state.niri.output_resized(&winit.output);
@@ -119,7 +117,6 @@ impl Winit {
backend,
damage_tracker,
ipc_outputs,
- enabled_outputs,
})
}
@@ -230,11 +227,7 @@ impl Winit {
}
}
- pub fn ipc_outputs(&self) -> Arc<Mutex<HashMap<String, niri_ipc::Output>>> {
+ pub fn ipc_outputs(&self) -> Arc<Mutex<IpcOutputMap>> {
self.ipc_outputs.clone()
}
-
- pub fn enabled_outputs(&self) -> Arc<Mutex<HashMap<String, Output>>> {
- self.enabled_outputs.clone()
- }
}