diff --git a/Cargo.lock b/Cargo.lock index 3c55c3d0..7e3a0872 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -101,7 +101,7 @@ dependencies = [ "ndk-context", "ndk-sys 0.6.0+11769913", "num_enum", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -266,13 +266,14 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9c39d707614dbcc6bed00015539f488d8e3fe3e66ed60961efc0c90f4b380b3" dependencies = [ + "async-fs", + "async-net", "enumflags2", "futures-channel", "futures-util", "rand", "serde", "serde_repr", - "tokio", "url", "zbus", ] @@ -289,6 +290,102 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-net" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" +dependencies = [ + "async-io", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", + "tracing", +] + [[package]] name = "async-recursion" version = "1.1.1" @@ -300,6 +397,30 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + [[package]] name = "async-trait" version = "0.1.83" @@ -372,7 +493,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "903e016de6be8ef8eb1bdc71b0f7988519c057281a762f9ecb57e0d8a145e03c" dependencies = [ "autocxx-engine", - "env_logger", + "env_logger 0.9.3", "indexmap 1.9.3", "syn 2.0.87", ] @@ -402,7 +523,7 @@ dependencies = [ "serde_json", "syn 2.0.87", "tempfile", - "thiserror", + "thiserror 1.0.69", "version_check", ] @@ -434,7 +555,7 @@ dependencies = [ "serde", "serde_json", "syn 2.0.87", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -539,6 +660,19 @@ dependencies = [ "objc2", ] +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -547,9 +681,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" dependencies = [ "bytemuck_derive", ] @@ -588,7 +722,7 @@ dependencies = [ "polling", "rustix", "slab", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -690,9 +824,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" +checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" dependencies = [ "chrono", "chrono-tz-build", @@ -701,12 +835,11 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" dependencies = [ "parse-zoneinfo", - "phf", "phf_codegen", ] @@ -1320,6 +1453,16 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log", + "regex", +] + [[package]] name = "env_logger" version = "0.9.3" @@ -1333,6 +1476,19 @@ dependencies = [ "termcolor", ] +[[package]] +name = "env_logger" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1388,20 +1544,6 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3ea1ec5f8307826a5b71094dd91fc04d4ae75d5709b20ad351c7fb4815c86ec" -[[package]] -name = "flexi_logger" -version = "0.28.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca927478b3747ba47f98af6ba0ac0daea4f12d12f55e9104071b3dc00276310" -dependencies = [ - "chrono", - "glob", - "log", - "nu-ansi-term", - "regex", - "thiserror", -] - [[package]] name = "fnv" version = "1.0.7" @@ -1416,7 +1558,7 @@ checksum = "cb4baadad5111c6820e97fc8bde5077258e6f272b5b38538db4b42e1812f29f3" dependencies = [ "const-cstr", "once_cell", - "thiserror", + "thiserror 1.0.69", "yeslogic-fontconfig-sys", ] @@ -1526,6 +1668,19 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-lite" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -1617,9 +1772,9 @@ dependencies = [ [[package]] name = "glam" -version = "0.28.0" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779ae4bf7e8421cf91c0b3b64e7e8b40b862fba4d393f59150042de7c4965a94" +checksum = "dc46dd3ec48fdd8e693a98d2b8bafae273a2d54c1de02a2a7e3d57d501f39677" dependencies = [ "approx 0.5.1", "mint", @@ -1695,12 +1850,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hermit-abi" version = "0.4.0" @@ -1933,7 +2082,7 @@ dependencies = [ "bytemuck", "ddsfile", "half", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2048,7 +2197,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -2317,7 +2466,7 @@ checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e" dependencies = [ "miette-derive", "once_cell", - "thiserror", + "thiserror 1.0.69", "unicode-width", ] @@ -2353,18 +2502,6 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" -[[package]] -name = "mio" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" -dependencies = [ - "hermit-abi 0.3.9", - "libc", - "wasi", - "windows-sys 0.52.0", -] - [[package]] name = "moveit" version = "0.6.0" @@ -2385,7 +2522,7 @@ dependencies = [ "log", "ndk-sys 0.5.0+25.2.9519653", "num_enum", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2400,7 +2537,7 @@ dependencies = [ "ndk-sys 0.6.0+11769913", "num_enum", "raw-window-handle", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2479,15 +2616,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "nu-ansi-term" -version = "0.50.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" -dependencies = [ - "windows-sys 0.52.0", -] - [[package]] name = "num-derive" version = "0.4.2" @@ -2840,7 +2968,7 @@ dependencies = [ "log", "ovr_overlay_sys", "slice-of-array", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2920,7 +3048,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.69", "ucd-trie", ] @@ -3028,6 +3156,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pipewire" version = "0.8.0" @@ -3041,7 +3180,7 @@ dependencies = [ "nix 0.27.1", "once_cell", "pipewire-sys", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3296,13 +3435,12 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rodio" -version = "0.19.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6006a627c1a38d37f3d3a85c6575418cfe34a5392d60a686d0071e1c8d427acb" +checksum = "e7ceb6607dd738c99bc8cb28eff249b7cd5c8ec88b9db96c0608c1480d140fb1" dependencies = [ "cpal", "hound", - "thiserror", ] [[package]] @@ -3594,7 +3732,7 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smithay" version = "0.3.0" -source = "git+https://github.com/Smithay/smithay.git#2fa584ef6a05adbfeecc20ebeee0f59b0c456f84" +source = "git+https://github.com/Smithay/smithay.git#eef07680c43e20cf4e528dd1222b3cadf6a32182" dependencies = [ "appendlist", "bitflags 2.6.0", @@ -3616,7 +3754,7 @@ dependencies = [ "scopeguard", "smallvec", "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", "wayland-protocols", "wayland-protocols-misc", @@ -3642,7 +3780,7 @@ dependencies = [ "memmap2 0.9.5", "pkg-config", "rustix", - "thiserror", + "thiserror 1.0.69", "wayland-backend", "wayland-client", "wayland-csd-frame", @@ -3663,16 +3801,6 @@ dependencies = [ "serde", ] -[[package]] -name = "socket2" -version = "0.5.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - [[package]] name = "stable_deref_trait" version = "1.2.0" @@ -3754,9 +3882,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.31.4" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" +checksum = "e3b5ae3f4f7d64646c46c4cae4e3f01d1c5d255c7406fdd7c7f999a94e488791" dependencies = [ "core-foundation-sys", "libc", @@ -3813,7 +3941,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", ] [[package]] @@ -3827,6 +3964,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "thiserror-impl" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "thread_local" version = "1.1.8" @@ -3881,23 +4029,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "tokio" -version = "1.41.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tracing", - "windows-sys 0.52.0", -] - [[package]] name = "toml" version = "0.8.19" @@ -4796,8 +4927,8 @@ dependencies = [ [[package]] name = "wlx-capture" -version = "0.3.15" -source = "git+https://github.com/galister/wlx-capture?tag=v0.3.15#5508cc69819002a11ad2afac585249598fc71696" +version = "0.4.0" +source = "git+https://github.com/galister/wlx-capture?tag=v0.4.0#412efb4214ca985208394ba2ea14be2b44a13c55" dependencies = [ "ashpd", "drm-fourcc", @@ -4826,7 +4957,7 @@ dependencies = [ "cstr", "ctrlc", "dbus", - "flexi_logger", + "env_logger 0.11.5", "fontconfig-rs", "freetype-rs", "futures", @@ -4857,7 +4988,7 @@ dependencies = [ "smithay", "strum", "sysinfo", - "thiserror", + "thiserror 2.0.3", "uuid", "vulkano", "vulkano-shaders", @@ -5068,8 +5199,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1162094dc63b1629fcc44150bcceeaa80798cd28bcbe7fa987b65a034c258608" dependencies = [ "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", "async-recursion", + "async-task", "async-trait", + "blocking", "enumflags2", "event-listener", "futures-core", @@ -5080,7 +5218,6 @@ dependencies = [ "serde", "serde_repr", "static_assertions", - "tokio", "tracing", "uds_windows", "windows-sys 0.59.0", diff --git a/Cargo.toml b/Cargo.toml index d41d39b3..d98af761 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,17 +13,17 @@ edition = "2021" anyhow = "1.0.89" ash = "^0.37.2" chrono = "0.4.38" -chrono-tz = "0.9.0" +chrono-tz = "0.10.0" clap = { version = "4.5.6", features = ["derive"] } config = "0.14.0" cstr = "0.2.12" ctrlc = { version = "3.4.4", features = ["termination"] } dbus = { version = "0.9.7" } -flexi_logger = "0.28.1" +env_logger = "0.11.5" fontconfig-rs = "0.1.1" freetype-rs = "0.36.0" # latest version supported on ubuntu 22.04 futures = "0.3.30" -glam = { version = "0.28.0", features = ["approx", "mint", "serde"] } +glam = { version = "0.29.2", features = ["approx", "mint", "serde"] } idmap = { version = "0.2.21", features = ["serde"] } idmap-derive = "0.1.2" input-linux = "0.7.0" @@ -41,7 +41,7 @@ ovr_overlay = { features = [ "ovr_system", ], git = "https://github.com/galister/ovr_overlay_oyasumi", optional = true } regex = "1.10.4" -rodio = { version = "0.19.0", default-features = false, features = [ +rodio = { version = "0.20.1", default-features = false, features = [ "wav", "hound", ] } @@ -51,11 +51,11 @@ serde_json = "1.0.117" serde_yaml = "0.9.34" smallvec = "1.13.2" strum = { version = "0.26.2", features = ["derive"] } -sysinfo = { version = "0.31.2" } -thiserror = "1.0.61" +sysinfo = { version = "0.32.0" } +thiserror = "2.0.3" vulkano = { git = "https://github.com/vulkano-rs/vulkano", rev = "94f50f1" } vulkano-shaders = { git = "https://github.com/vulkano-rs/vulkano", rev = "94f50f1" } -wlx-capture = { git = "https://github.com/galister/wlx-capture", tag = "v0.3.15", default-features = false } +wlx-capture = { git = "https://github.com/galister/wlx-capture", tag = "v0.4.0", default-features = false } libmonado-rs = { git = "https://github.com/technobaboo/libmonado-rs", rev = "a495f6d", optional = true } winit = { version = "0.30.0", optional = true } xdg = "2.5.2" diff --git a/src/backend/openxr/overlay.rs b/src/backend/openxr/overlay.rs index 442ff649..7ed2857d 100644 --- a/src/backend/openxr/overlay.rs +++ b/src/backend/openxr/overlay.rs @@ -66,17 +66,17 @@ impl OverlayData { let sub_image = data.acquire_present_release(command_buffer, my_view, self.state.alpha)?; + let transform = self.state.transform * frame_transform.transform; + let aspect_ratio = extent[1] as f32 / extent[0] as f32; let (scale_x, scale_y) = if aspect_ratio < 1.0 { - let major = self.state.transform.matrix3.col(0).length(); + let major = transform.matrix3.col(0).length(); (major, major * aspect_ratio) } else { - let major = self.state.transform.matrix3.col(1).length(); + let major = transform.matrix3.col(1).length(); (major / aspect_ratio, major) }; - let transform = self.state.transform * frame_transform.transform; - if let Some(curvature) = self.state.curvature { let radius = scale_x / (2.0 * PI * curvature); let quat = helpers::transform_to_norm_quat(&transform); diff --git a/src/main.rs b/src/main.rs index 3e8d5ee0..2ade164e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,6 @@ use std::{ }; use clap::Parser; -use flexi_logger::{Duplicate, FileSpec, LogSpecification}; use sysinfo::Pid; /// The lightweight desktop overlay for OpenVR and OpenXR @@ -181,10 +180,10 @@ fn logging_init(args: &mut Args) -> anyhow::Result<()> { if let Some(log_to) = log_file.filter(|s| !s.is_empty()) { if let Err(e) = file_logging_init(&log_to) { log::error!("Failed to initialize file logging: {}", e); - flexi_logger::Logger::try_with_env_or_str("info")?.start()?; + env_logger::init(); } } else { - flexi_logger::Logger::try_with_env_or_str("info")?.start()?; + env_logger::init(); } log_panics::init(); @@ -192,25 +191,26 @@ fn logging_init(args: &mut Args) -> anyhow::Result<()> { } fn file_logging_init(log_to: &str) -> anyhow::Result<()> { - let file_spec = FileSpec::try_from(PathBuf::from(log_to))?; - let log_spec = LogSpecification::env_or_parse("info")?; + use std::io::Write; + let target = Box::new(std::fs::File::create(log_to)?); - let duplicate = log_spec - .module_filters() - .iter() - .find(|m| m.module_name.is_none()) - .map(|m| match m.level_filter { - log::LevelFilter::Trace => Duplicate::Trace, - log::LevelFilter::Debug => Duplicate::Debug, - log::LevelFilter::Info => Duplicate::Info, - log::LevelFilter::Warn => Duplicate::Warn, - _ => Duplicate::Error, - }); + env_logger::Builder::new() + .target(env_logger::Target::Pipe(target)) + .filter(None, log::LevelFilter::Info) + .parse_default_env() + .format(|buf, record| { + eprintln!("[{}] {}", record.level(), record.args()); + writeln!( + buf, + "[{} {} {}] {}", + chrono::Local::now().format("%H:%M:%S%.3f"), + record.level(), + record.module_path().unwrap_or_default(), + record.args() + ) + }) + .init(); - flexi_logger::Logger::with(log_spec) - .log_to_file(file_spec) - .duplicate_to_stderr(duplicate.unwrap_or(Duplicate::Error)) - .start()?; println!("Logging to: {}", log_to); Ok(()) } @@ -226,7 +226,10 @@ fn ensure_single_instance(replace: bool) -> bool { if let Ok(pid_str) = std::fs::read_to_string(&path) { if let Ok(pid) = pid_str.trim().parse::() { let mut system = sysinfo::System::new(); - system.refresh_processes(sysinfo::ProcessesToUpdate::Some(&[Pid::from_u32(pid)])); + system.refresh_processes( + sysinfo::ProcessesToUpdate::Some(&[Pid::from_u32(pid)]), + false, + ); if let Some(proc) = system.process(sysinfo::Pid::from_u32(pid)) { if replace { proc.kill_with(sysinfo::Signal::Term); diff --git a/src/overlays/screen.rs b/src/overlays/screen.rs index 16503a3b..a3e17160 100644 --- a/src/overlays/screen.rs +++ b/src/overlays/screen.rs @@ -477,9 +477,11 @@ impl OverlayRenderer for ScreenRenderer { continue; } self.extent.get_or_insert_with(|| { - self.transform = affine_from_format(&frame.format); extent_from_format(frame.format, &app.session.config) }); + if let Some(new_transform) = affine_from_format(&frame.format) { + self.transform = new_transform; + } match app.graphics.dmabuf_texture(frame) { Ok(new) => { let pipeline = match self.pipeline { @@ -520,9 +522,11 @@ impl OverlayRenderer for ScreenRenderer { continue; }; self.extent.get_or_insert_with(|| { - self.transform = affine_from_format(&frame.format); extent_from_format(frame.format, &app.session.config) }); + if let Some(new_transform) = affine_from_format(&frame.format) { + self.transform = new_transform; + } log::debug!("{}: New MemFd frame", self.name); let format = fourcc_to_vk(frame.format.fourcc)?; @@ -1053,29 +1057,30 @@ fn extent_from_res(width: u32, height: u32, config: &GeneralConfig) -> [u32; 3] [w, h, 1] } -fn affine_from_format(format: &FrameFormat) -> Affine3A { +fn affine_from_format(format: &FrameFormat) -> Option { const FLIP_X: Vec3 = Vec3 { x: -1.0, y: 1.0, z: 1.0, }; - match format.transform { - wlx_frame::Transform::None => Affine3A::IDENTITY, - wlx_frame::Transform::Rotated90 => Affine3A::from_rotation_z(PI / 2.0), + Some(match format.transform { + wlx_frame::Transform::Normal => Affine3A::IDENTITY, + wlx_frame::Transform::Rotated90 => Affine3A::from_rotation_z(-PI / 2.0), wlx_frame::Transform::Rotated180 => Affine3A::from_rotation_z(PI), - wlx_frame::Transform::Rotated270 => Affine3A::from_rotation_z(-PI / 2.0), + wlx_frame::Transform::Rotated270 => Affine3A::from_rotation_z(PI / 2.0), wlx_frame::Transform::Flipped => Affine3A::from_scale(FLIP_X), wlx_frame::Transform::Flipped90 => { - Affine3A::from_scale(FLIP_X) * Affine3A::from_rotation_z(PI / 2.0) + Affine3A::from_scale(FLIP_X) * Affine3A::from_rotation_z(-PI / 2.0) } wlx_frame::Transform::Flipped180 => { Affine3A::from_scale(FLIP_X) * Affine3A::from_rotation_z(PI) } wlx_frame::Transform::Flipped270 => { - Affine3A::from_scale(FLIP_X) * Affine3A::from_rotation_z(-PI / 2.0) + Affine3A::from_scale(FLIP_X) * Affine3A::from_rotation_z(PI / 2.0) } - } + wlx_frame::Transform::Undefined => return None, + }) } #[cfg(all(feature = "pipewire", feature = "x11"))]