refactor: minor refactor

This commit is contained in:
drendog 2025-10-25 11:58:15 +02:00
parent 2cd5df6ee1
commit b232df23a9
Signed by: dwenya
GPG key ID: 8DD77074645332D0
5 changed files with 33 additions and 36 deletions

View file

@ -47,13 +47,13 @@ impl FemtoVGWindow {
} }
pub fn set_scale_factor(&self, scale_factor: f32) { pub fn set_scale_factor(&self, scale_factor: f32) {
info!("Setting scale factor to {}", scale_factor); info!("Setting scale factor to {scale_factor}");
self.scale_factor.set(scale_factor); self.scale_factor.set(scale_factor);
self.window() self.window()
.dispatch_event(WindowEvent::ScaleFactorChanged { scale_factor }); .dispatch_event(WindowEvent::ScaleFactorChanged { scale_factor });
} }
pub fn scale_factor(&self) -> f32 { pub const fn scale_factor(&self) -> f32 {
self.scale_factor.get() self.scale_factor.get()
} }
} }

View file

@ -11,13 +11,13 @@ pub struct CustomSlintPlatform {
} }
impl CustomSlintPlatform { impl CustomSlintPlatform {
pub fn new(window: Rc<FemtoVGWindow>) -> Self { pub const fn new(window: Rc<FemtoVGWindow>) -> Self {
Self { window } Self { window }
} }
} }
impl Platform for CustomSlintPlatform { impl Platform for CustomSlintPlatform {
fn create_window_adapter(&self) -> Result<Rc<(dyn WindowAdapter + 'static)>, PlatformError> { fn create_window_adapter(&self) -> Result<Rc<dyn WindowAdapter + 'static>, PlatformError> {
Result::Ok(Rc::clone(&self.window) as Rc<dyn WindowAdapter>) Result::Ok(Rc::clone(&self.window) as Rc<dyn WindowAdapter>)
} }
} }

View file

@ -37,6 +37,22 @@ mod config;
mod macros; mod macros;
mod state; mod state;
type GlobalObjects = (
WlCompositor,
WlOutput,
ZwlrLayerShellV1,
WlSeat,
Option<WpFractionalScaleManagerV1>,
Option<WpViewporter>,
);
type SurfaceObjects = (
Rc<WlSurface>,
Rc<ZwlrLayerSurfaceV1>,
Option<Rc<WpFractionalScaleV1>>,
Option<Rc<WpViewport>>,
);
pub struct WindowingSystem { pub struct WindowingSystem {
state: WindowState, state: WindowState,
connection: Rc<Connection>, connection: Rc<Connection>,
@ -108,17 +124,7 @@ impl WindowingSystem {
fn initialize_globals( fn initialize_globals(
connection: &Connection, connection: &Connection,
queue_handle: &QueueHandle<WindowState>, queue_handle: &QueueHandle<WindowState>,
) -> Result< ) -> Result<GlobalObjects, LayerShikaError> {
(
WlCompositor,
WlOutput,
ZwlrLayerShellV1,
WlSeat,
Option<WpFractionalScaleManagerV1>,
Option<WpViewporter>,
),
LayerShikaError,
> {
let global_list = registry_queue_init::<WindowState>(connection) let global_list = registry_queue_init::<WindowState>(connection)
.map(|(global_list, _)| global_list) .map(|(global_list, _)| global_list)
.map_err(|e| LayerShikaError::GlobalInitialization(e.to_string()))?; .map_err(|e| LayerShikaError::GlobalInitialization(e.to_string()))?;
@ -166,12 +172,7 @@ impl WindowingSystem {
viewporter: Option<&WpViewporter>, viewporter: Option<&WpViewporter>,
queue_handle: &QueueHandle<WindowState>, queue_handle: &QueueHandle<WindowState>,
config: &WindowConfig, config: &WindowConfig,
) -> ( ) -> SurfaceObjects {
Rc<WlSurface>,
Rc<ZwlrLayerSurfaceV1>,
Option<Rc<WpFractionalScaleV1>>,
Option<Rc<WpViewport>>,
) {
let surface = Rc::new(compositor.create_surface(queue_handle, ())); let surface = Rc::new(compositor.create_surface(queue_handle, ()));
let layer_surface = Rc::new(layer_shell.get_layer_surface( let layer_surface = Rc::new(layer_shell.get_layer_surface(
&surface, &surface,
@ -273,7 +274,7 @@ impl WindowingSystem {
self.event_loop self.event_loop
.run(None, &mut self.state, move |shared_data| { .run(None, &mut self.state, move |shared_data| {
if let Err(e) = Self::process_events(connection, event_queue, shared_data) { if let Err(e) = Self::process_events(connection, event_queue, shared_data) {
error!("Error processing events: {}", e); error!("Error processing events: {e}");
} }
}) })
.map_err(|e| LayerShikaError::EventLoop(e.to_string())) .map_err(|e| LayerShikaError::EventLoop(e.to_string()))

View file

@ -49,10 +49,7 @@ impl Dispatch<ZwlrLayerSurfaceV1, ()> for WindowState {
width, width,
height, height,
} => { } => {
info!( info!("Layer surface configured with compositor size: {width}x{height}");
"Layer surface configured with compositor size: {}x{}",
width, height
);
layer_surface.ack_configure(serial); layer_surface.ack_configure(serial);
let output_width = state.output_size().width; let output_width = state.output_size().width;
@ -112,19 +109,19 @@ impl Dispatch<WlOutput, ()> for WindowState {
) { ) {
match event { match event {
wl_output::Event::Mode { width, height, .. } => { wl_output::Event::Mode { width, height, .. } => {
info!("WlOutput size changed to {}x{}", width, height); info!("WlOutput size changed to {width}x{height}");
let width = width.try_into().unwrap_or_default(); let width = width.try_into().unwrap_or_default();
let height = height.try_into().unwrap_or_default(); let height = height.try_into().unwrap_or_default();
state.set_output_size(PhysicalSize::new(width, height)); state.set_output_size(PhysicalSize::new(width, height));
} }
wl_output::Event::Description { ref description } => { wl_output::Event::Description { ref description } => {
info!("WlOutput description: {:?}", description); info!("WlOutput description: {description:?}");
} }
wl_output::Event::Scale { ref factor } => { wl_output::Event::Scale { ref factor } => {
info!("WlOutput factor scale: {:?}", factor); info!("WlOutput factor scale: {factor:?}");
} }
wl_output::Event::Name { ref name } => { wl_output::Event::Name { ref name } => {
info!("WlOutput name: {:?}", name); info!("WlOutput name: {name:?}");
} }
wl_output::Event::Geometry { wl_output::Event::Geometry {
x, x,
@ -136,7 +133,7 @@ impl Dispatch<WlOutput, ()> for WindowState {
model, model,
transform, transform,
} => { } => {
info!("WlOutput geometry: x={}, y={}, physical_width={}, physical_height={}, subpixel={:?}, make={:?}, model={:?}, transform={:?}", x, y, physical_width, physical_height, subpixel, make, model, transform); info!("WlOutput geometry: x={x}, y={y}, physical_width={physical_width}, physical_height={physical_height}, subpixel={subpixel:?}, make={make:?}, model={model:?}, transform={transform:?}");
} }
wl_output::Event::Done => { wl_output::Event::Done => {
info!("WlOutput done"); info!("WlOutput done");

View file

@ -67,12 +67,11 @@ impl WindowState {
}) })
} }
#[allow(clippy::cast_precision_loss)]
#[allow(clippy::cast_possible_wrap)]
pub fn update_size(&mut self, width: u32, height: u32) { pub fn update_size(&mut self, width: u32, height: u32) {
if width == 0 || height == 0 { if width == 0 || height == 0 {
info!( info!("Skipping update_size with zero dimension: {width}x{height}");
"Skipping update_size with zero dimension: {}x{}",
width, height
);
return; return;
} }
@ -181,7 +180,7 @@ impl WindowState {
self.height self.height
} }
pub fn set_output_size(&mut self, output_size: PhysicalSize) { pub const fn set_output_size(&mut self, output_size: PhysicalSize) {
self.output_size = output_size; self.output_size = output_size;
} }