swapchain sizes from content size

This commit is contained in:
galister
2025-06-20 01:40:09 +09:00
parent 6a77b302c9
commit d1e3f51b8a
5 changed files with 16 additions and 6 deletions

View File

@@ -1,6 +1,6 @@
use std::sync::Arc; use std::sync::Arc;
use glam::vec2; use glam::{Vec2, vec2};
use vulkano::{command_buffer::CommandBufferUsage, image::view::ImageView}; use vulkano::{command_buffer::CommandBufferUsage, image::view::ImageView};
use wgui::{ use wgui::{
event::{ event::{
@@ -138,6 +138,10 @@ impl OverlayRenderer for GuiPanel {
self.layout.tick()?; self.layout.tick()?;
} }
if self.layout.content_size == vec2(0., 0.) {
return Ok(ShouldRender::Unable);
}
Ok(if self.layout.check_toggle_needs_redraw() { Ok(if self.layout.check_toggle_needs_redraw() {
ShouldRender::Should ShouldRender::Should
} else { } else {
@@ -172,8 +176,8 @@ impl OverlayRenderer for GuiPanel {
fn frame_meta(&mut self) -> Option<FrameMeta> { fn frame_meta(&mut self) -> Option<FrameMeta> {
Some(FrameMeta { Some(FrameMeta {
extent: [ extent: [
self.max_size.max(self.layout.content_size.x as _), self.max_size.min(self.layout.content_size.x as _),
self.max_size.max(self.layout.content_size.y as _), self.max_size.min(self.layout.content_size.y as _),
1, 1,
], ],
..Default::default() ..Default::default()

View File

@@ -239,6 +239,7 @@ fn logging_init(args: &mut Args) {
.with_default_directive(LevelFilter::INFO.into()) .with_default_directive(LevelFilter::INFO.into())
.from_env_lossy() .from_env_lossy()
.add_directive("zbus=warn".parse().unwrap()) .add_directive("zbus=warn".parse().unwrap())
.add_directive("cosmic_text=warn".parse().unwrap())
.add_directive("wlx_capture::wayland=info".parse().unwrap()) .add_directive("wlx_capture::wayland=info".parse().unwrap())
.add_directive("smithay=debug".parse().unwrap()), /* GLES render spam */ .add_directive("smithay=debug".parse().unwrap()), /* GLES render spam */
); );

View File

@@ -1,4 +1,4 @@
use glam::Vec3A; use glam::{Vec3A, vec2};
use std::sync::{Arc, LazyLock}; use std::sync::{Arc, LazyLock};
use wgui::parser::parse_color_hex; use wgui::parser::parse_color_hex;
use wgui::renderer_vk::text::{FontWeight, TextStyle}; use wgui::renderer_vk::text::{FontWeight, TextStyle};
@@ -57,6 +57,8 @@ where
taffy::style::Style::DEFAULT, taffy::style::Style::DEFAULT,
); );
panel.layout.update(vec2(2048., 2048.), 0.0)?;
Ok(OverlayData { Ok(OverlayData {
state: OverlayState { state: OverlayState {
name: ANCHOR_NAME.clone(), name: ANCHOR_NAME.clone(),

View File

@@ -1,6 +1,6 @@
use std::sync::Arc; use std::sync::Arc;
use glam::Vec3A; use glam::{Vec3A, vec2};
use crate::{ use crate::{
backend::overlay::{OverlayBackend, OverlayState}, backend::overlay::{OverlayBackend, OverlayState},
@@ -19,6 +19,7 @@ pub fn create_custom(
unreachable!(); unreachable!();
let panel = GuiPanel::new_blank(app, 2048).ok()?; let panel = GuiPanel::new_blank(app, 2048).ok()?;
panel.layout.update(vec2(2048., 2048.), 0.0).ok()?;
let state = OverlayState { let state = OverlayState {
name, name,

View File

@@ -1,4 +1,4 @@
use glam::Vec3A; use glam::{Vec3A, vec2};
use wgui::{ use wgui::{
parser::parse_color_hex, parser::parse_color_hex,
taffy::{ taffy::{
@@ -52,6 +52,8 @@ where
lerp: 1.0, lerp: 1.0,
}; };
panel.layout.update(vec2(2048., 2048.), 0.0)?;
Ok(OverlayData { Ok(OverlayData {
state: OverlayState { state: OverlayState {
name: WATCH_NAME.into(), name: WATCH_NAME.into(),