desktop: Fix gui scale on launch on wayland

This commit is contained in:
Colin Kinloch 2024-03-26 12:46:06 +00:00 committed by TÖRÖK Attila
parent eec5f9c313
commit 6f568d0a2d
2 changed files with 35 additions and 23 deletions

View File

@ -419,7 +419,15 @@ impl App {
self.window.scale_factor(), self.window.scale_factor(),
); );
let _ = self.window.request_inner_size(window_size); let viewport_size = self.window.inner_size();
if let Some(new_viewport_size) = self.window.request_inner_size(window_size) {
if new_viewport_size != viewport_size {
self.gui.borrow_mut().resize(new_viewport_size);
} else {
tracing::warn!("Unable to resize window");
}
}
self.window.set_fullscreen(if self.start_fullscreen { self.window.set_fullscreen(if self.start_fullscreen {
Some(Fullscreen::Borderless(None)) Some(Fullscreen::Borderless(None))
} else { } else {

View File

@ -141,31 +141,35 @@ impl GuiController {
&self.descriptors &self.descriptors
} }
pub fn resize(&mut self, size: PhysicalSize<u32>) {
if size.width > 0 && size.height > 0 {
self.surface.configure(
&self.descriptors.device,
&wgpu::SurfaceConfiguration {
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
format: self.surface_format,
width: size.width,
height: size.height,
present_mode: Default::default(),
desired_maximum_frame_latency: 2,
alpha_mode: Default::default(),
view_formats: Default::default(),
},
);
self.movie_view_renderer.update_resolution(
&self.descriptors,
self.window.fullscreen().is_none() && !self.no_gui,
size.height,
self.window.scale_factor(),
);
self.size = size;
}
}
#[must_use] #[must_use]
pub fn handle_event(&mut self, event: &WindowEvent) -> bool { pub fn handle_event(&mut self, event: &WindowEvent) -> bool {
if let WindowEvent::Resized(size) = &event { if let WindowEvent::Resized(size) = &event {
if size.width > 0 && size.height > 0 { self.resize(*size);
self.surface.configure(
&self.descriptors.device,
&wgpu::SurfaceConfiguration {
usage: wgpu::TextureUsages::RENDER_ATTACHMENT,
format: self.surface_format,
width: size.width,
height: size.height,
present_mode: Default::default(),
desired_maximum_frame_latency: 2,
alpha_mode: Default::default(),
view_formats: Default::default(),
},
);
self.movie_view_renderer.update_resolution(
&self.descriptors,
self.window.fullscreen().is_none() && !self.no_gui,
size.height,
self.window.scale_factor(),
);
self.size = *size;
}
} }
if let WindowEvent::ThemeChanged(theme) = &event { if let WindowEvent::ThemeChanged(theme) = &event {