diff --git a/Cargo.lock b/Cargo.lock index 0fb70525..d41c4145 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,15 +18,6 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - [[package]] name = "adler" version = "1.0.2" @@ -70,7 +61,7 @@ dependencies = [ "alsa-sys", "bitflags 1.3.2", "libc", - "nix 0.24.3", + "nix", ] [[package]] @@ -85,12 +76,12 @@ dependencies = [ [[package]] name = "android-activity" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39b801912a977c3fd52d80511fe1c0c8480c6f957f21ae2ce1b92ffe970cf4b9" +checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" dependencies = [ "android-properties", - "bitflags 2.4.1", + "bitflags 2.4.2", "cc", "cesu8", "jni 0.21.1", @@ -188,21 +179,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "backtrace" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "base64" version = "0.21.7" @@ -231,16 +207,16 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.2" +version = "0.69.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c69fae65a523209d34240b60abe0c42d33d1045d445c0839d8a4894a736e2d" +checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cexpr", "clang-sys", + "itertools", "lazy_static", "lazycell", - "peeking_take_while", "proc-macro2", "quote", "regex", @@ -278,9 +254,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -324,9 +300,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ea31d69bda4949c1c1562c1e6f042a1caefac98cdc8a298260a2ff41c1e2d42b" dependencies = [ "bytemuck_derive", ] @@ -366,11 +342,11 @@ dependencies = [ [[package]] name = "calloop" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50b5a44d59a98c55a9eeb518f39bf7499ba19fd98ee7d22618687f3f10adbf" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "log", "polling", "rustix", @@ -386,8 +362,8 @@ checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" dependencies = [ "calloop", "rustix", - "wayland-backend 0.3.2", - "wayland-client 0.31.1", + "wayland-backend", + "wayland-client", ] [[package]] @@ -437,6 +413,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e53693616d3075149f4ead59bdeecd204ac6b8192d8969757601b74bddf00f" + [[package]] name = "clang-sys" version = "1.7.0" @@ -450,16 +432,16 @@ dependencies = [ [[package]] name = "cocoa" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", "cocoa-foundation", "core-foundation", - "core-graphics 0.22.3", - "foreign-types 0.3.2", + "core-graphics", + "foreign-types", "libc", "objc", ] @@ -495,10 +477,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] -name = "com-rs" -version = "0.2.1" +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] [[package]] name = "combine" @@ -535,19 +542,6 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" -[[package]] -name = "core-graphics" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", - "foreign-types 0.3.2", - "libc", -] - [[package]] name = "core-graphics" version = "0.23.1" @@ -557,7 +551,7 @@ dependencies = [ "bitflags 1.3.2", "core-foundation", "core-graphics-types", - "foreign-types 0.5.0", + "foreign-types", "libc", ] @@ -589,7 +583,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" dependencies = [ - "bindgen 0.69.2", + "bindgen 0.69.4", ] [[package]] @@ -698,6 +692,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "ctor" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e" +dependencies = [ + "quote", + "syn 2.0.48", +] + [[package]] name = "cursor-icon" version = "1.1.0" @@ -706,11 +710,11 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] name = "d3d12" -version = "0.7.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" +checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "libloading 0.8.1", "winapi", ] @@ -748,6 +752,45 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "drm" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" +dependencies = [ + "bitflags 2.4.2", + "bytemuck", + "drm-ffi", + "drm-fourcc", + "rustix", +] + +[[package]] +name = "drm-ffi" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" +dependencies = [ + "drm-sys", + "rustix", +] + +[[package]] +name = "drm-fourcc" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" + +[[package]] +name = "drm-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" +dependencies = [ + "libc", + "linux-raw-sys 0.6.4", +] + [[package]] name = "either" version = "1.9.0" @@ -770,9 +813,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" dependencies = [ "humantime", "is-terminal", @@ -818,12 +861,12 @@ dependencies = [ [[package]] name = "exr" -version = "1.6.4" +version = "1.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" dependencies = [ "bit_field", - "flume 0.10.14", + "flume", "half", "lebe", "miniz_oxide", @@ -840,18 +883,15 @@ checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" [[package]] name = "fastrand" -version = "1.9.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fdeflate" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209098dd6dfc4445aa6111f0e98653ac323eaa4dfd212c9ca3931bf9955c31bd" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ "simd-adler32", ] @@ -902,34 +942,24 @@ dependencies = [ [[package]] name = "flume" -version = "0.10.14" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "pin-project", "spin", ] [[package]] -name = "flume" -version = "0.11.0" +name = "font-types" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" -dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "spin", -] +checksum = "0bd7f3ea17572640b606b35df42cfb6ecdf003704b062580e59918692190b73d" [[package]] name = "fontconfig-parser" -version = "0.5.3" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "674e258f4b5d2dcd63888c01c68413c51f565e8af99d2f7701c7b81d79ef41c4" +checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d" dependencies = [ "roxmltree", ] @@ -948,15 +978,6 @@ dependencies = [ "ttf-parser 0.19.2", ] -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared 0.1.1", -] - [[package]] name = "foreign-types" version = "0.5.0" @@ -964,7 +985,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" dependencies = [ "foreign-types-macros", - "foreign-types-shared 0.3.1", + "foreign-types-shared", ] [[package]] @@ -978,12 +999,6 @@ dependencies = [ "syn 2.0.48", ] -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "foreign-types-shared" version = "0.3.1" @@ -1125,16 +1140,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "gethostname" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "gethostname" version = "0.4.3" @@ -1152,10 +1157,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi", - "wasm-bindgen", ] [[package]] @@ -1168,12 +1171,6 @@ dependencies = [ "weezl", ] -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - [[package]] name = "gio-sys" version = "0.18.1" @@ -1222,9 +1219,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "glow" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "886c2a30b160c4c6fec8f987430c26b526b7988ca71f664e6a699ddf6f9601e4" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" dependencies = [ "js-sys", "slotmap", @@ -1243,8 +1240,9 @@ dependencies = [ [[package]] name = "glyphon" -version = "0.3.0" -source = "git+https://github.com/grovesNL/glyphon.git?rev=2caa9fc5e5923c1d827d177c3619cab7e9885b85#2caa9fc5e5923c1d827d177c3619cab7e9885b85" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a62d0338e4056db6a73221c2fb2e30619452f6ea9651bac4110f51b0f7a7581" dependencies = [ "cosmic-text", "etagere", @@ -1269,7 +1267,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "gpu-alloc-types", ] @@ -1279,21 +1277,20 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", ] [[package]] name = "gpu-allocator" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40fe17c8a05d60c38c0a4e5a3c802f2f1ceb66b76c67d96ffb34bef0475a7fad" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" dependencies = [ - "backtrace", "log", "presser", "thiserror", "winapi", - "windows 0.51.1", + "windows 0.52.0", ] [[package]] @@ -1302,7 +1299,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "gpu-descriptor-types", "hashbrown", ] @@ -1313,7 +1310,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", ] [[package]] @@ -1366,14 +1363,14 @@ dependencies = [ [[package]] name = "hassle-rs" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1397650ee315e8891a0df210707f0fc61771b0cc518c3023896064c5407cb3b0" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 1.3.2", - "com-rs", + "bitflags 2.4.2", + "com", "libc", - "libloading 0.7.4", + "libloading 0.8.1", "thiserror", "widestring", "winapi", @@ -1387,9 +1384,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" [[package]] name = "hexf-parse" @@ -1406,22 +1403,24 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iced_core" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "bitflags 1.3.2", - "instant", + "glam", "log", "num-traits", "palette", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", + "smol_str", "thiserror", + "web-time", "xxhash-rust", ] [[package]] name = "iced_futures" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "futures", "iced_core", @@ -1433,19 +1432,19 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "bitflags 1.3.2", "bytemuck", "cosmic-text", - "glam", "half", "iced_core", + "iced_futures", "image", "kamadak-exif", "log", "once_cell", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "rustc-hash", "thiserror", "unicode-segmentation", @@ -1455,30 +1454,30 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "iced_graphics", "iced_tiny_skia", "iced_wgpu", "log", - "raw-window-handle 0.5.2", "thiserror", ] [[package]] name = "iced_runtime" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "iced_core", "iced_futures", + "raw-window-handle 0.6.0", "thiserror", ] [[package]] name = "iced_style" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "iced_core", "once_cell", @@ -1488,14 +1487,13 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "bytemuck", "cosmic-text", "iced_graphics", "kurbo", "log", - "raw-window-handle 0.5.2", "rustc-hash", "softbuffer", "tiny-skia", @@ -1505,7 +1503,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "bitflags 1.3.2", "bytemuck", @@ -1516,14 +1514,13 @@ dependencies = [ "iced_graphics", "log", "once_cell", - "raw-window-handle 0.5.2", "wgpu", ] [[package]] name = "iced_widget" version = "0.12.0" -source = "git+https://github.com/iced-rs/iced.git?rev=fc285d3e461626408c56bbc1605fcf0c974b2f69#fc285d3e461626408c56bbc1605fcf0c974b2f69" +source = "git+https://github.com/iced-rs/iced.git?rev=b4dcf4ecf702a493476791efd95e190e5c1db812#b4dcf4ecf702a493476791efd95e190e5c1db812" dependencies = [ "iced_renderer", "iced_runtime", @@ -1564,9 +1561,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520" dependencies = [ "equivalent", "hashbrown", @@ -1581,17 +1578,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "is-terminal" version = "0.4.10" @@ -1603,6 +1589,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "jni" version = "0.19.0" @@ -1673,9 +1668,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee" dependencies = [ "wasm-bindgen", ] @@ -1735,9 +1730,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libloading" @@ -1771,16 +1766,22 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "libc", "redox_syscall 0.4.1", ] [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "linux-raw-sys" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4" [[package]] name = "lock_api" @@ -1800,9 +1801,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" -version = "0.11.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" +checksum = "db2c024b41519440580066ba82aab04092b333e09066a5eb86c7c4890df31f22" dependencies = [ "hashbrown", ] @@ -1842,41 +1843,23 @@ dependencies = [ [[package]] name = "memmap2" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45fd3a57831bf88bc63f8cebc0cf956116276e97fef3966103e96416209f7c92" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "metal" version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "block", "core-graphics-types", - "foreign-types 0.5.0", + "foreign-types", "log", "objc", "paste", @@ -1930,9 +1913,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", "simd-adler32", @@ -1954,12 +1937,12 @@ checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" [[package]] name = "naga" -version = "0.14.2" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e" +checksum = "8878eb410fc90853da3908aebfe61d73d26d4437ef850b70050461f939509899" dependencies = [ "bit-set", - "bitflags 2.4.1", + "bitflags 2.4.2", "codespan-reporting", "hexf-parse", "indexmap", @@ -1972,15 +1955,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "nanorand" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom", -] - [[package]] name = "ndk" version = "0.7.0" @@ -2001,7 +1975,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "jni-sys", "log", "ndk-sys 0.5.0+25.2.9519653", @@ -2108,32 +2082,6 @@ dependencies = [ "libc", ] -[[package]] -name = "nix" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - -[[package]] -name = "nix" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", - "memoffset 0.7.1", - "pin-utils", -] - [[package]] name = "nom" version = "7.1.3" @@ -2171,9 +2119,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", ] @@ -2191,9 +2139,9 @@ dependencies = [ [[package]] name = "num-derive" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", @@ -2288,7 +2236,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 3.0.0", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 2.0.48", @@ -2355,15 +2303,6 @@ dependencies = [ "objc", ] -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - [[package]] name = "oboe" version = "0.5.0" @@ -2417,13 +2356,13 @@ version = "0.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ac4177ce94a34c3bcfa9e39f8338c8170918faa560d00dd923d984331a749e4" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "byte-slice-cast", "byteorder", "generational-arena", "lazy_static", "log", - "num-derive 0.4.1", + "num-derive 0.4.2", "num-traits", "soundfont", "thiserror", @@ -2431,9 +2370,9 @@ dependencies = [ [[package]] name = "palette" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e2f34147767aa758aa649415b50a69eeb46a67f9dc7db8011eeb3d84b351dc" +checksum = "3d38e6e5ca1612e2081cc31188f08c3cba630ce4ba44709a153f1a0f38d678f2" dependencies = [ "approx", "fast-srgb8", @@ -2443,9 +2382,9 @@ dependencies = [ [[package]] name = "palette_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7db010ec5ff3d4385e4f133916faacd9dad0f6a09394c92d825b3aed310fa0a" +checksum = "e05d1c929301fee6830dafa764341118829b2535c216b0571e3821ecac5c885b" dependencies = [ "proc-macro2", "quote", @@ -2576,26 +2515,6 @@ dependencies = [ name = "piano-math" version = "0.1.0" -[[package]] -name = "pin-project" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] - [[package]] name = "pin-project-lite" version = "0.2.13" @@ -2610,9 +2529,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" +checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" [[package]] name = "png" @@ -2629,9 +2548,9 @@ dependencies = [ [[package]] name = "polling" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +checksum = "30054e72317ab98eddd8561db0f6524df3367636884b7b21b703e4b280a84a14" dependencies = [ "cfg-if", "concurrent-queue", @@ -2659,27 +2578,27 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b2685dd208a3771337d8d386a89840f0f43cd68be8dae90a5f8c2384effc9cd" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_edit 0.21.0", + "toml_edit 0.21.1", ] [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135ede8821cf6376eb7a64148901e1690b788c11ae94dc297ae917dbc91dc0e" +checksum = "0f0f7f43585c34e4fdd7497d746bc32e14458cf11c69341cc0587b1d825dde42" [[package]] name = "qoi" @@ -2692,18 +2611,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" -dependencies = [ - "memchr", -] - -[[package]] -name = "quick-xml" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" dependencies = [ "memchr", ] @@ -2758,9 +2668,9 @@ checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544" [[package]] name = "rayon" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -2768,14 +2678,23 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", ] +[[package]] +name = "read-fonts" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1362980db95801b70031dd592dc052a44b1810ca9da8fbcf7b25983f3174ed0" +dependencies = [ + "font-types", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -2805,9 +2724,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2817,9 +2736,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2874,25 +2793,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64", - "bitflags 2.4.1", + "bitflags 2.4.2", "serde", "serde_derive", ] [[package]] name = "roxmltree" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862340e351ce1b271a378ec53f304a5558f7db87f3769dc655a8f6ecbb68b302" -dependencies = [ - "xmlparser", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.23" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" [[package]] name = "rustc-hash" @@ -2911,14 +2821,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.30" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.13", "windows-sys 0.52.0", ] @@ -2968,7 +2878,7 @@ checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" dependencies = [ "ab_glyph", "log", - "memmap2 0.9.3", + "memmap2 0.9.4", "smithay-client-toolkit", "tiny-skia", ] @@ -2987,18 +2897,18 @@ checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.195" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", @@ -3016,9 +2926,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simd-adler32" @@ -3052,9 +2962,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.12.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2593d31f82ead8df961d8bd23a64c2ccf2eb5dd34b0a34bfb4dd54011c72009e" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "smithay-client-toolkit" @@ -3062,60 +2972,63 @@ version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "calloop", "calloop-wayland-source", "cursor-icon", "libc", "log", - "memmap2 0.9.3", + "memmap2 0.9.4", "rustix", "thiserror", - "wayland-backend 0.3.2", - "wayland-client 0.31.1", + "wayland-backend", + "wayland-client", "wayland-csd-frame", "wayland-cursor", "wayland-protocols", "wayland-protocols-wlr", - "wayland-scanner 0.31.0", + "wayland-scanner", "xkeysym", ] [[package]] name = "smol_str" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" dependencies = [ "serde", ] [[package]] name = "softbuffer" -version = "0.2.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2b953f6ba7285f0af131eb748aabd8ddaf53e0b81dda3ba5d803b0847d6559f" +checksum = "071916a85d1db274b4ed57af3a14afb66bd836ae7f82ebb6f1fd3455107830d9" dependencies = [ + "as-raw-xcb-connection", "bytemuck", - "cfg_aliases", + "cfg_aliases 0.2.0", "cocoa", - "core-graphics 0.22.3", + "core-graphics", + "drm", "fastrand", - "foreign-types 0.3.2", + "foreign-types", + "js-sys", "log", - "nix 0.26.4", + "memmap2 0.9.4", "objc", - "raw-window-handle 0.5.2", - "redox_syscall 0.3.5", - "thiserror", + "raw-window-handle 0.6.0", + "redox_syscall 0.4.1", + "rustix", + "tiny-xlib", "wasm-bindgen", - "wayland-backend 0.1.2", - "wayland-client 0.30.2", - "wayland-sys 0.30.1", + "wayland-backend", + "wayland-client", + "wayland-sys", "web-sys", - "windows-sys 0.48.0", - "x11-dl", - "x11rb 0.11.1", + "windows-sys 0.52.0", + "x11rb", ] [[package]] @@ -3138,12 +3051,11 @@ dependencies = [ [[package]] name = "spirv" -version = "0.2.0+1.5.4" +version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 1.3.2", - "num-traits", + "bitflags 2.4.2", ] [[package]] @@ -3166,10 +3078,11 @@ checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" [[package]] name = "swash" -version = "0.1.8" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7c73c813353c347272919aa1af2885068b05e625e5532b43049e4f641ae77f" +checksum = "d06ff4664af8923625604261c645f5c4cc610cc83c84bec74b50d76237089de7" dependencies = [ + "read-fonts", "yazi", "zeno", ] @@ -3266,9 +3179,9 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a067b809476893fce6a254cf285850ff69c847e6cfbade6a20b655b6c7e80d" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ "arrayref", "arrayvec", @@ -3281,15 +3194,27 @@ dependencies = [ [[package]] name = "tiny-skia-path" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de35e8a90052baaaf61f171680ac2f8e925a1e43ea9d2e3a00514772250e541" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" dependencies = [ "arrayref", "bytemuck", "strict-num", ] +[[package]] +name = "tiny-xlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d" +dependencies = [ + "as-raw-xcb-connection", + "ctor", + "libloading 0.8.1", + "tracing", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -3307,14 +3232,14 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.21.0", + "toml_edit 0.22.4", ] [[package]] @@ -3339,9 +3264,20 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951" dependencies = [ "indexmap", "serde", @@ -3380,9 +3316,9 @@ checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-bidi-mirroring" @@ -3410,9 +3346,9 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-properties" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f91c8b21fbbaa18853c3d0801c78f4fc94cdb976699bb03e832e75f7fd22f0" +checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" [[package]] name = "unicode-script" @@ -3422,9 +3358,9 @@ checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc" [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" @@ -3494,9 +3430,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3504,9 +3440,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b" dependencies = [ "bumpalo", "log", @@ -3519,9 +3455,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" +checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97" dependencies = [ "cfg-if", "js-sys", @@ -3531,9 +3467,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3541,9 +3477,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", @@ -3554,9 +3490,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838" [[package]] name = "wasm-timer" @@ -3575,55 +3511,28 @@ dependencies = [ [[package]] name = "wayland-backend" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b48e27457e8da3b2260ac60d0a94512f5cba36448679f3747c0865b7893ed8" -dependencies = [ - "cc", - "downcast-rs", - "io-lifetimes", - "nix 0.26.4", - "scoped-tls", - "smallvec", - "wayland-sys 0.30.1", -] - -[[package]] -name = "wayland-backend" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4" +checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" dependencies = [ "cc", "downcast-rs", - "nix 0.26.4", + "rustix", "scoped-tls", "smallvec", - "wayland-sys 0.31.1", -] - -[[package]] -name = "wayland-client" -version = "0.30.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489c9654770f674fc7e266b3c579f4053d7551df0ceb392f153adb1f9ed06ac8" -dependencies = [ - "bitflags 1.3.2", - "nix 0.26.4", - "wayland-backend 0.1.2", - "wayland-scanner 0.30.1", + "wayland-sys", ] [[package]] name = "wayland-client" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3" +checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" dependencies = [ - "bitflags 2.4.1", - "nix 0.26.4", - "wayland-backend 0.3.2", - "wayland-scanner 0.31.0", + "bitflags 2.4.2", + "rustix", + "wayland-backend", + "wayland-scanner", ] [[package]] @@ -3632,32 +3541,32 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cursor-icon", - "wayland-backend 0.3.2", + "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b" +checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" dependencies = [ - "nix 0.26.4", - "wayland-client 0.31.1", + "rustix", + "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.31.0" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 2.4.1", - "wayland-backend 0.3.2", - "wayland-client 0.31.1", - "wayland-scanner 0.31.0", + "bitflags 2.4.2", + "wayland-backend", + "wayland-client", + "wayland-scanner", ] [[package]] @@ -3666,11 +3575,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" dependencies = [ - "bitflags 2.4.1", - "wayland-backend 0.3.2", - "wayland-client 0.31.1", + "bitflags 2.4.2", + "wayland-backend", + "wayland-client", "wayland-protocols", - "wayland-scanner 0.31.0", + "wayland-scanner", ] [[package]] @@ -3679,47 +3588,24 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags 2.4.1", - "wayland-backend 0.3.2", - "wayland-client 0.31.1", + "bitflags 2.4.2", + "wayland-backend", + "wayland-client", "wayland-protocols", - "wayland-scanner 0.31.0", -] - -[[package]] -name = "wayland-scanner" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e" -dependencies = [ - "proc-macro2", - "quick-xml 0.28.2", - "quote", + "wayland-scanner", ] [[package]] name = "wayland-scanner" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c" +checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" dependencies = [ "proc-macro2", - "quick-xml 0.30.0", + "quick-xml", "quote", ] -[[package]] -name = "wayland-sys" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b2a02ac608e07132978689a6f9bf4214949c85998c247abadd4f4129b1aa06" -dependencies = [ - "dlib", - "lazy_static", - "log", - "pkg-config", -] - [[package]] name = "wayland-sys" version = "0.31.1" @@ -3734,9 +3620,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446" dependencies = [ "js-sys", "wasm-bindgen", @@ -3754,25 +3640,25 @@ dependencies = [ [[package]] name = "weezl" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "wgpu" -version = "0.18.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e7d227c9f961f2061c26f4cb0fbd4df0ef37e056edd0931783599d6c94ef24" +checksum = "0bfe9a310dcf2e6b85f00c46059aaeaf4184caa8e29a1ecd4b7a704c3482332d" dependencies = [ "arrayvec", "cfg-if", - "flume 0.11.0", + "cfg_aliases 0.1.1", "js-sys", "log", "naga", "parking_lot 0.12.1", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "smallvec", "static_assertions", "wasm-bindgen", @@ -3785,19 +3671,22 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.18.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef91c1d62d1e9e81c79e600131a258edf75c9531cbdbde09c44a011a47312726" +checksum = "6b15e451d4060ada0d99a64df44e4d590213496da7c4f245572d51071e8e30ed" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.4.2", + "cfg_aliases 0.1.1", "codespan-reporting", + "indexmap", "log", "naga", + "once_cell", "parking_lot 0.12.1", "profiling", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "rustc-hash", "smallvec", "thiserror", @@ -3808,16 +3697,17 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.18.1" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b84ecc802da3eb67b4cf3dd9ea6fe45bbb47ef13e6c49c5c3240868a9cc6cdd9" +checksum = "e3bb47856236bfafc0bc591a925eb036ac19cd987624a447ff353e7a7e7e6f72" dependencies = [ "android_system_properties", "arrayvec", "ash", "bit-set", - "bitflags 2.4.1", + "bitflags 2.4.2", "block", + "cfg_aliases 0.1.1", "core-graphics-types", "d3d12", "glow", @@ -3838,7 +3728,7 @@ dependencies = [ "parking_lot 0.12.1", "profiling", "range-alloc", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "renderdoc-sys", "rustc-hash", "smallvec", @@ -3855,17 +3745,17 @@ version = "0.1.0" dependencies = [ "bytemuck", "log", - "raw-window-handle 0.5.2", + "raw-window-handle 0.6.0", "wgpu", ] [[package]] name = "wgpu-types" -version = "0.18.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d5ed5f0edf0de351fe311c53304986315ce866f394a2e6df0c4b3c70774bcdd" +checksum = "895fcbeb772bfb049eb80b2d6e47f6c9af235284e9703c96fc0218a42ffd5af2" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "js-sys", "web-sys", ] @@ -3901,15 +3791,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "winapi-wsapoll" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -3942,21 +3823,21 @@ dependencies = [ [[package]] name = "windows" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -4159,25 +4040,25 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winit" -version = "0.29.9" +version = "0.29.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2376dab13e09c01ad8b679f0dbc7038af4ec43d9a91344338e37bd686481550" +checksum = "4c824f11941eeae66ec71111cc2674373c772f482b58939bb4066b642aa2ffcf" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.4.1", + "bitflags 2.4.2", "bytemuck", "calloop", - "cfg_aliases", + "cfg_aliases 0.1.1", "core-foundation", - "core-graphics 0.23.1", + "core-graphics", "cursor-icon", "icrate", "js-sys", "libc", "log", - "memmap2 0.9.3", + "memmap2 0.9.4", "ndk 0.8.0", "ndk-sys 0.5.0+25.2.9519653", "objc2", @@ -4194,23 +4075,23 @@ dependencies = [ "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", - "wayland-backend 0.3.2", - "wayland-client 0.31.1", + "wayland-backend", + "wayland-client", "wayland-protocols", "wayland-protocols-plasma", "web-sys", "web-time", "windows-sys 0.48.0", "x11-dl", - "x11rb 0.13.0", + "x11rb", "xkbcommon-dl", ] [[package]] name = "winnow" -version = "0.5.34" +version = "0.5.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" +checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" dependencies = [ "memchr", ] @@ -4236,22 +4117,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "x11rb" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf3c79412dd91bae7a7366b8ad1565a85e35dd049affc3a6a2c549e97419617" -dependencies = [ - "gethostname 0.2.3", - "libc", - "libloading 0.7.4", - "nix 0.25.1", - "once_cell", - "winapi", - "winapi-wsapoll", - "x11rb-protocol 0.11.1", -] - [[package]] name = "x11rb" version = "0.13.0" @@ -4259,21 +4124,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" dependencies = [ "as-raw-xcb-connection", - "gethostname 0.4.3", + "gethostname", "libc", "libloading 0.8.1", "once_cell", "rustix", - "x11rb-protocol 0.13.0", -] - -[[package]] -name = "x11rb-protocol" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0b1513b141123073ce54d5bb1d33f801f17508fbd61e02060b1214e96d39c56" -dependencies = [ - "nix 0.25.1", + "x11rb-protocol", ] [[package]] @@ -4294,7 +4150,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "dlib", "log", "once_cell", @@ -4313,12 +4169,6 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" -[[package]] -name = "xmlparser" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" - [[package]] name = "xxhash-rust" version = "0.8.8" diff --git a/Cargo.toml b/Cargo.toml index c63cb03c..88a9f531 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,8 +13,8 @@ default-members = ["neothesia"] resolver = "2" [workspace.dependencies] -wgpu = "0.18" -glyphon = { git = "https://github.com/grovesNL/glyphon.git", rev = "2caa9fc5e5923c1d827d177c3619cab7e9885b85" } +wgpu = "0.19" +glyphon = "0.5" log = "0.4" bytemuck = { version = "1.5", features = ["derive"] } env_logger = "0.10" diff --git a/neothesia/Cargo.toml b/neothesia/Cargo.toml index 51451e3b..500a735f 100644 --- a/neothesia/Cargo.toml +++ b/neothesia/Cargo.toml @@ -38,12 +38,12 @@ oxisynth = { version = "0.0.5", optional = true } midi-file = { workspace = true } midi-io = { path = "../midi-io" } -iced_style = {git = "https://github.com/iced-rs/iced.git", rev="fc285d3e461626408c56bbc1605fcf0c974b2f69"} -iced_graphics = {git = "https://github.com/iced-rs/iced.git", rev="fc285d3e461626408c56bbc1605fcf0c974b2f69"} -iced_core = {git = "https://github.com/iced-rs/iced.git", rev="fc285d3e461626408c56bbc1605fcf0c974b2f69"} -iced_runtime = {git = "https://github.com/iced-rs/iced.git", rev="fc285d3e461626408c56bbc1605fcf0c974b2f69"} -iced_wgpu = { git = "https://github.com/iced-rs/iced.git", rev="fc285d3e461626408c56bbc1605fcf0c974b2f69", features = ["image"] } -iced_widget = { git = "https://github.com/iced-rs/iced.git", rev="fc285d3e461626408c56bbc1605fcf0c974b2f69", features = ["image"] } +iced_style = {git = "https://github.com/iced-rs/iced.git", rev="b4dcf4ecf702a493476791efd95e190e5c1db812"} +iced_graphics = {git = "https://github.com/iced-rs/iced.git", rev="b4dcf4ecf702a493476791efd95e190e5c1db812"} +iced_core = {git = "https://github.com/iced-rs/iced.git", rev="b4dcf4ecf702a493476791efd95e190e5c1db812"} +iced_runtime = {git = "https://github.com/iced-rs/iced.git", rev="b4dcf4ecf702a493476791efd95e190e5c1db812"} +iced_wgpu = { git = "https://github.com/iced-rs/iced.git", rev="b4dcf4ecf702a493476791efd95e190e5c1db812", features = ["image"] } +iced_widget = { git = "https://github.com/iced-rs/iced.git", rev="b4dcf4ecf702a493476791efd95e190e5c1db812", features = ["image"] } [[bin]] name = "neothesia" diff --git a/neothesia/src/iced_utils/iced_conversion.rs b/neothesia/src/iced_utils/iced_conversion.rs index cbc6c926..b11590a8 100644 --- a/neothesia/src/iced_utils/iced_conversion.rs +++ b/neothesia/src/iced_utils/iced_conversion.rs @@ -44,7 +44,7 @@ pub enum Mode { /// Converts a winit window event into an iced event. pub fn window_event( - event: &winit::event::WindowEvent, + event: winit::event::WindowEvent, scale_factor: f64, modifiers: winit::keyboard::ModifiersState, ) -> Option { @@ -75,7 +75,7 @@ pub fn window_event( WindowEvent::CursorEntered { .. } => Some(Event::Mouse(mouse::Event::CursorEntered)), WindowEvent::CursorLeft { .. } => Some(Event::Mouse(mouse::Event::CursorLeft)), WindowEvent::MouseInput { button, state, .. } => { - let button = mouse_button(*button); + let button = mouse_button(button); Some(Event::Mouse(match state { winit::event::ElementState::Pressed => mouse::Event::ButtonPressed(button), @@ -86,8 +86,8 @@ pub fn window_event( winit::event::MouseScrollDelta::LineDelta(delta_x, delta_y) => { Some(Event::Mouse(mouse::Event::WheelScrolled { delta: mouse::ScrollDelta::Lines { - x: *delta_x, - y: *delta_y, + x: delta_x, + y: delta_y, }, })) } @@ -105,22 +105,33 @@ pub fn window_event( winit::event::KeyEvent { logical_key, state, - // text, + text, + location, .. }, .. } => Some(Event::Keyboard({ - let key_code = key_code(logical_key); + let key = key(logical_key); let modifiers = self::modifiers(modifiers); + let location = match location { + winit::keyboard::KeyLocation::Standard => keyboard::Location::Standard, + winit::keyboard::KeyLocation::Left => keyboard::Location::Left, + winit::keyboard::KeyLocation::Right => keyboard::Location::Right, + winit::keyboard::KeyLocation::Numpad => keyboard::Location::Numpad, + }; + match state { winit::event::ElementState::Pressed => keyboard::Event::KeyPressed { - key_code, + key, modifiers, + location, + text, }, winit::event::ElementState::Released => keyboard::Event::KeyReleased { - key_code, + key, modifiers, + location, }, } })), @@ -129,7 +140,7 @@ pub fn window_event( )), WindowEvent::Focused(focused) => Some(Event::Window( id, - if *focused { + if focused { window::Event::Focused } else { window::Event::Unfocused @@ -144,7 +155,7 @@ pub fn window_event( WindowEvent::HoveredFileCancelled => { Some(Event::Window(id, window::Event::FilesHoveredLeft)) } - WindowEvent::Touch(touch) => Some(Event::Touch(touch_event(*touch, scale_factor))), + WindowEvent::Touch(touch) => Some(Event::Touch(touch_event(touch, scale_factor))), WindowEvent::Moved(position) => { let winit::dpi::LogicalPosition { x, y } = position.to_logical(scale_factor); @@ -235,6 +246,7 @@ pub fn mouse_interaction(interaction: mouse::Interaction) -> winit::window::Curs Interaction::ResizingHorizontally => winit::window::CursorIcon::EwResize, Interaction::ResizingVertically => winit::window::CursorIcon::NsResize, Interaction::NotAllowed => winit::window::CursorIcon::NotAllowed, + Interaction::ZoomIn => winit::window::CursorIcon::ZoomIn, } } @@ -247,10 +259,8 @@ pub fn mouse_button(mouse_button: winit::event::MouseButton) -> mouse::Button { winit::event::MouseButton::Left => mouse::Button::Left, winit::event::MouseButton::Right => mouse::Button::Right, winit::event::MouseButton::Middle => mouse::Button::Middle, - winit::event::MouseButton::Back => mouse::Button::Other(99), - winit::event::MouseButton::Forward => mouse::Button::Other(98), - // winit::event::MouseButton::Back => mouse::Button::Back, - // winit::event::MouseButton::Forward => mouse::Button::Forward, + winit::event::MouseButton::Back => mouse::Button::Back, + winit::event::MouseButton::Forward => mouse::Button::Forward, winit::event::MouseButton::Other(other) => mouse::Button::Other(other), } } @@ -302,124 +312,321 @@ pub fn touch_event(touch: winit::event::Touch, scale_factor: f64) -> touch::Even /// /// [`winit`]: https://github.com/rust-windowing/winit /// [`iced_native`]: https://github.com/hecrj/iced/tree/master/native -pub fn key_code(key: &winit::keyboard::Key) -> keyboard::KeyCode { - use keyboard::KeyCode; +pub fn key(key: winit::keyboard::Key) -> keyboard::Key { + use keyboard::key::Named; use winit::keyboard::NamedKey; match key { - winit::keyboard::Key::Character(c) => match c.as_str() { - "1" => KeyCode::Key1, - "2" => KeyCode::Key2, - "3" => KeyCode::Key3, - "4" => KeyCode::Key4, - "5" => KeyCode::Key5, - "6" => KeyCode::Key6, - "7" => KeyCode::Key7, - "8" => KeyCode::Key8, - "9" => KeyCode::Key9, - "0" => KeyCode::Key0, - "a" => KeyCode::A, - "b" => KeyCode::B, - "c" => KeyCode::C, - "d" => KeyCode::D, - "e" => KeyCode::E, - "f" => KeyCode::F, - "g" => KeyCode::G, - "h" => KeyCode::H, - "i" => KeyCode::I, - "j" => KeyCode::J, - "k" => KeyCode::K, - "l" => KeyCode::L, - "m" => KeyCode::M, - "n" => KeyCode::N, - "o" => KeyCode::O, - "p" => KeyCode::P, - "q" => KeyCode::Q, - "r" => KeyCode::R, - "s" => KeyCode::S, - "t" => KeyCode::T, - "u" => KeyCode::U, - "v" => KeyCode::V, - "w" => KeyCode::W, - "x" => KeyCode::X, - "y" => KeyCode::Y, - "z" => KeyCode::Z, - _ => KeyCode::Unlabeled, - }, - winit::keyboard::Key::Named(named_key) => match named_key { - NamedKey::Escape => KeyCode::Escape, - NamedKey::F1 => KeyCode::F1, - NamedKey::F2 => KeyCode::F2, - NamedKey::F3 => KeyCode::F3, - NamedKey::F4 => KeyCode::F4, - NamedKey::F5 => KeyCode::F5, - NamedKey::F6 => KeyCode::F6, - NamedKey::F7 => KeyCode::F7, - NamedKey::F8 => KeyCode::F8, - NamedKey::F9 => KeyCode::F9, - NamedKey::F10 => KeyCode::F10, - NamedKey::F11 => KeyCode::F11, - NamedKey::F12 => KeyCode::F12, - NamedKey::F13 => KeyCode::F13, - NamedKey::F14 => KeyCode::F14, - NamedKey::F15 => KeyCode::F15, - NamedKey::F16 => KeyCode::F16, - NamedKey::F17 => KeyCode::F17, - NamedKey::F18 => KeyCode::F18, - NamedKey::F19 => KeyCode::F19, - NamedKey::F20 => KeyCode::F20, - NamedKey::F21 => KeyCode::F21, - NamedKey::F22 => KeyCode::F22, - NamedKey::F23 => KeyCode::F23, - NamedKey::F24 => KeyCode::F24, - NamedKey::PrintScreen => KeyCode::Snapshot, - NamedKey::ScrollLock => KeyCode::Scroll, - NamedKey::Pause => KeyCode::Pause, - NamedKey::Insert => KeyCode::Insert, - NamedKey::Home => KeyCode::Home, - NamedKey::Delete => KeyCode::Delete, - NamedKey::End => KeyCode::End, - NamedKey::PageDown => KeyCode::PageDown, - NamedKey::PageUp => KeyCode::PageUp, - NamedKey::ArrowLeft => KeyCode::Left, - NamedKey::ArrowUp => KeyCode::Up, - NamedKey::ArrowRight => KeyCode::Right, - NamedKey::ArrowDown => KeyCode::Down, - NamedKey::Backspace => KeyCode::Backspace, - NamedKey::Enter => KeyCode::Enter, - NamedKey::Space => KeyCode::Space, - NamedKey::Compose => KeyCode::Compose, - NamedKey::NumLock => KeyCode::Numlock, - NamedKey::AppSwitch => KeyCode::Apps, - NamedKey::Convert => KeyCode::Convert, - NamedKey::LaunchMail => KeyCode::Mail, - NamedKey::MediaApps => KeyCode::MediaSelect, - NamedKey::MediaStop => KeyCode::MediaStop, - NamedKey::AudioVolumeMute => KeyCode::Mute, - NamedKey::MediaStepForward => KeyCode::NavigateForward, - NamedKey::MediaStepBackward => KeyCode::NavigateBackward, - NamedKey::MediaSkipForward => KeyCode::NextTrack, - NamedKey::NonConvert => KeyCode::NoConvert, - NamedKey::MediaPlayPause => KeyCode::PlayPause, - NamedKey::Power => KeyCode::Power, - NamedKey::MediaSkipBackward => KeyCode::PrevTrack, - NamedKey::PowerOff => KeyCode::Sleep, - NamedKey::Tab => KeyCode::Tab, - NamedKey::AudioVolumeDown => KeyCode::VolumeDown, - NamedKey::AudioVolumeUp => KeyCode::VolumeUp, - NamedKey::WakeUp => KeyCode::Wake, - NamedKey::BrowserBack => KeyCode::WebBack, - NamedKey::BrowserFavorites => KeyCode::WebFavorites, - NamedKey::BrowserForward => KeyCode::WebForward, - NamedKey::BrowserHome => KeyCode::WebHome, - NamedKey::BrowserRefresh => KeyCode::WebRefresh, - NamedKey::BrowserSearch => KeyCode::WebSearch, - NamedKey::BrowserStop => KeyCode::WebStop, - NamedKey::Copy => KeyCode::Copy, - NamedKey::Paste => KeyCode::Paste, - NamedKey::Cut => KeyCode::Cut, - _ => KeyCode::Unlabeled, - }, - _ => KeyCode::Unlabeled, + winit::keyboard::Key::Character(c) => keyboard::Key::Character(c), + winit::keyboard::Key::Named(named_key) => keyboard::Key::Named(match named_key { + NamedKey::Alt => Named::Alt, + NamedKey::AltGraph => Named::AltGraph, + NamedKey::CapsLock => Named::CapsLock, + NamedKey::Control => Named::Control, + NamedKey::Fn => Named::Fn, + NamedKey::FnLock => Named::FnLock, + NamedKey::NumLock => Named::NumLock, + NamedKey::ScrollLock => Named::ScrollLock, + NamedKey::Shift => Named::Shift, + NamedKey::Symbol => Named::Symbol, + NamedKey::SymbolLock => Named::SymbolLock, + NamedKey::Meta => Named::Meta, + NamedKey::Hyper => Named::Hyper, + NamedKey::Super => Named::Super, + NamedKey::Enter => Named::Enter, + NamedKey::Tab => Named::Tab, + NamedKey::Space => Named::Space, + NamedKey::ArrowDown => Named::ArrowDown, + NamedKey::ArrowLeft => Named::ArrowLeft, + NamedKey::ArrowRight => Named::ArrowRight, + NamedKey::ArrowUp => Named::ArrowUp, + NamedKey::End => Named::End, + NamedKey::Home => Named::Home, + NamedKey::PageDown => Named::PageDown, + NamedKey::PageUp => Named::PageUp, + NamedKey::Backspace => Named::Backspace, + NamedKey::Clear => Named::Clear, + NamedKey::Copy => Named::Copy, + NamedKey::CrSel => Named::CrSel, + NamedKey::Cut => Named::Cut, + NamedKey::Delete => Named::Delete, + NamedKey::EraseEof => Named::EraseEof, + NamedKey::ExSel => Named::ExSel, + NamedKey::Insert => Named::Insert, + NamedKey::Paste => Named::Paste, + NamedKey::Redo => Named::Redo, + NamedKey::Undo => Named::Undo, + NamedKey::Accept => Named::Accept, + NamedKey::Again => Named::Again, + NamedKey::Attn => Named::Attn, + NamedKey::Cancel => Named::Cancel, + NamedKey::ContextMenu => Named::ContextMenu, + NamedKey::Escape => Named::Escape, + NamedKey::Execute => Named::Execute, + NamedKey::Find => Named::Find, + NamedKey::Help => Named::Help, + NamedKey::Pause => Named::Pause, + NamedKey::Play => Named::Play, + NamedKey::Props => Named::Props, + NamedKey::Select => Named::Select, + NamedKey::ZoomIn => Named::ZoomIn, + NamedKey::ZoomOut => Named::ZoomOut, + NamedKey::BrightnessDown => Named::BrightnessDown, + NamedKey::BrightnessUp => Named::BrightnessUp, + NamedKey::Eject => Named::Eject, + NamedKey::LogOff => Named::LogOff, + NamedKey::Power => Named::Power, + NamedKey::PowerOff => Named::PowerOff, + NamedKey::PrintScreen => Named::PrintScreen, + NamedKey::Hibernate => Named::Hibernate, + NamedKey::Standby => Named::Standby, + NamedKey::WakeUp => Named::WakeUp, + NamedKey::AllCandidates => Named::AllCandidates, + NamedKey::Alphanumeric => Named::Alphanumeric, + NamedKey::CodeInput => Named::CodeInput, + NamedKey::Compose => Named::Compose, + NamedKey::Convert => Named::Convert, + NamedKey::FinalMode => Named::FinalMode, + NamedKey::GroupFirst => Named::GroupFirst, + NamedKey::GroupLast => Named::GroupLast, + NamedKey::GroupNext => Named::GroupNext, + NamedKey::GroupPrevious => Named::GroupPrevious, + NamedKey::ModeChange => Named::ModeChange, + NamedKey::NextCandidate => Named::NextCandidate, + NamedKey::NonConvert => Named::NonConvert, + NamedKey::PreviousCandidate => Named::PreviousCandidate, + NamedKey::Process => Named::Process, + NamedKey::SingleCandidate => Named::SingleCandidate, + NamedKey::HangulMode => Named::HangulMode, + NamedKey::HanjaMode => Named::HanjaMode, + NamedKey::JunjaMode => Named::JunjaMode, + NamedKey::Eisu => Named::Eisu, + NamedKey::Hankaku => Named::Hankaku, + NamedKey::Hiragana => Named::Hiragana, + NamedKey::HiraganaKatakana => Named::HiraganaKatakana, + NamedKey::KanaMode => Named::KanaMode, + NamedKey::KanjiMode => Named::KanjiMode, + NamedKey::Katakana => Named::Katakana, + NamedKey::Romaji => Named::Romaji, + NamedKey::Zenkaku => Named::Zenkaku, + NamedKey::ZenkakuHankaku => Named::ZenkakuHankaku, + NamedKey::Soft1 => Named::Soft1, + NamedKey::Soft2 => Named::Soft2, + NamedKey::Soft3 => Named::Soft3, + NamedKey::Soft4 => Named::Soft4, + NamedKey::ChannelDown => Named::ChannelDown, + NamedKey::ChannelUp => Named::ChannelUp, + NamedKey::Close => Named::Close, + NamedKey::MailForward => Named::MailForward, + NamedKey::MailReply => Named::MailReply, + NamedKey::MailSend => Named::MailSend, + NamedKey::MediaClose => Named::MediaClose, + NamedKey::MediaFastForward => Named::MediaFastForward, + NamedKey::MediaPause => Named::MediaPause, + NamedKey::MediaPlay => Named::MediaPlay, + NamedKey::MediaPlayPause => Named::MediaPlayPause, + NamedKey::MediaRecord => Named::MediaRecord, + NamedKey::MediaRewind => Named::MediaRewind, + NamedKey::MediaStop => Named::MediaStop, + NamedKey::MediaTrackNext => Named::MediaTrackNext, + NamedKey::MediaTrackPrevious => Named::MediaTrackPrevious, + NamedKey::New => Named::New, + NamedKey::Open => Named::Open, + NamedKey::Print => Named::Print, + NamedKey::Save => Named::Save, + NamedKey::SpellCheck => Named::SpellCheck, + NamedKey::Key11 => Named::Key11, + NamedKey::Key12 => Named::Key12, + NamedKey::AudioBalanceLeft => Named::AudioBalanceLeft, + NamedKey::AudioBalanceRight => Named::AudioBalanceRight, + NamedKey::AudioBassBoostDown => Named::AudioBassBoostDown, + NamedKey::AudioBassBoostToggle => Named::AudioBassBoostToggle, + NamedKey::AudioBassBoostUp => Named::AudioBassBoostUp, + NamedKey::AudioFaderFront => Named::AudioFaderFront, + NamedKey::AudioFaderRear => Named::AudioFaderRear, + NamedKey::AudioSurroundModeNext => Named::AudioSurroundModeNext, + NamedKey::AudioTrebleDown => Named::AudioTrebleDown, + NamedKey::AudioTrebleUp => Named::AudioTrebleUp, + NamedKey::AudioVolumeDown => Named::AudioVolumeDown, + NamedKey::AudioVolumeUp => Named::AudioVolumeUp, + NamedKey::AudioVolumeMute => Named::AudioVolumeMute, + NamedKey::MicrophoneToggle => Named::MicrophoneToggle, + NamedKey::MicrophoneVolumeDown => Named::MicrophoneVolumeDown, + NamedKey::MicrophoneVolumeUp => Named::MicrophoneVolumeUp, + NamedKey::MicrophoneVolumeMute => Named::MicrophoneVolumeMute, + NamedKey::SpeechCorrectionList => Named::SpeechCorrectionList, + NamedKey::SpeechInputToggle => Named::SpeechInputToggle, + NamedKey::LaunchApplication1 => Named::LaunchApplication1, + NamedKey::LaunchApplication2 => Named::LaunchApplication2, + NamedKey::LaunchCalendar => Named::LaunchCalendar, + NamedKey::LaunchContacts => Named::LaunchContacts, + NamedKey::LaunchMail => Named::LaunchMail, + NamedKey::LaunchMediaPlayer => Named::LaunchMediaPlayer, + NamedKey::LaunchMusicPlayer => Named::LaunchMusicPlayer, + NamedKey::LaunchPhone => Named::LaunchPhone, + NamedKey::LaunchScreenSaver => Named::LaunchScreenSaver, + NamedKey::LaunchSpreadsheet => Named::LaunchSpreadsheet, + NamedKey::LaunchWebBrowser => Named::LaunchWebBrowser, + NamedKey::LaunchWebCam => Named::LaunchWebCam, + NamedKey::LaunchWordProcessor => Named::LaunchWordProcessor, + NamedKey::BrowserBack => Named::BrowserBack, + NamedKey::BrowserFavorites => Named::BrowserFavorites, + NamedKey::BrowserForward => Named::BrowserForward, + NamedKey::BrowserHome => Named::BrowserHome, + NamedKey::BrowserRefresh => Named::BrowserRefresh, + NamedKey::BrowserSearch => Named::BrowserSearch, + NamedKey::BrowserStop => Named::BrowserStop, + NamedKey::AppSwitch => Named::AppSwitch, + NamedKey::Call => Named::Call, + NamedKey::Camera => Named::Camera, + NamedKey::CameraFocus => Named::CameraFocus, + NamedKey::EndCall => Named::EndCall, + NamedKey::GoBack => Named::GoBack, + NamedKey::GoHome => Named::GoHome, + NamedKey::HeadsetHook => Named::HeadsetHook, + NamedKey::LastNumberRedial => Named::LastNumberRedial, + NamedKey::Notification => Named::Notification, + NamedKey::MannerMode => Named::MannerMode, + NamedKey::VoiceDial => Named::VoiceDial, + NamedKey::TV => Named::TV, + NamedKey::TV3DMode => Named::TV3DMode, + NamedKey::TVAntennaCable => Named::TVAntennaCable, + NamedKey::TVAudioDescription => Named::TVAudioDescription, + NamedKey::TVAudioDescriptionMixDown => Named::TVAudioDescriptionMixDown, + NamedKey::TVAudioDescriptionMixUp => Named::TVAudioDescriptionMixUp, + NamedKey::TVContentsMenu => Named::TVContentsMenu, + NamedKey::TVDataService => Named::TVDataService, + NamedKey::TVInput => Named::TVInput, + NamedKey::TVInputComponent1 => Named::TVInputComponent1, + NamedKey::TVInputComponent2 => Named::TVInputComponent2, + NamedKey::TVInputComposite1 => Named::TVInputComposite1, + NamedKey::TVInputComposite2 => Named::TVInputComposite2, + NamedKey::TVInputHDMI1 => Named::TVInputHDMI1, + NamedKey::TVInputHDMI2 => Named::TVInputHDMI2, + NamedKey::TVInputHDMI3 => Named::TVInputHDMI3, + NamedKey::TVInputHDMI4 => Named::TVInputHDMI4, + NamedKey::TVInputVGA1 => Named::TVInputVGA1, + NamedKey::TVMediaContext => Named::TVMediaContext, + NamedKey::TVNetwork => Named::TVNetwork, + NamedKey::TVNumberEntry => Named::TVNumberEntry, + NamedKey::TVPower => Named::TVPower, + NamedKey::TVRadioService => Named::TVRadioService, + NamedKey::TVSatellite => Named::TVSatellite, + NamedKey::TVSatelliteBS => Named::TVSatelliteBS, + NamedKey::TVSatelliteCS => Named::TVSatelliteCS, + NamedKey::TVSatelliteToggle => Named::TVSatelliteToggle, + NamedKey::TVTerrestrialAnalog => Named::TVTerrestrialAnalog, + NamedKey::TVTerrestrialDigital => Named::TVTerrestrialDigital, + NamedKey::TVTimer => Named::TVTimer, + NamedKey::AVRInput => Named::AVRInput, + NamedKey::AVRPower => Named::AVRPower, + NamedKey::ColorF0Red => Named::ColorF0Red, + NamedKey::ColorF1Green => Named::ColorF1Green, + NamedKey::ColorF2Yellow => Named::ColorF2Yellow, + NamedKey::ColorF3Blue => Named::ColorF3Blue, + NamedKey::ColorF4Grey => Named::ColorF4Grey, + NamedKey::ColorF5Brown => Named::ColorF5Brown, + NamedKey::ClosedCaptionToggle => Named::ClosedCaptionToggle, + NamedKey::Dimmer => Named::Dimmer, + NamedKey::DisplaySwap => Named::DisplaySwap, + NamedKey::DVR => Named::DVR, + NamedKey::Exit => Named::Exit, + NamedKey::FavoriteClear0 => Named::FavoriteClear0, + NamedKey::FavoriteClear1 => Named::FavoriteClear1, + NamedKey::FavoriteClear2 => Named::FavoriteClear2, + NamedKey::FavoriteClear3 => Named::FavoriteClear3, + NamedKey::FavoriteRecall0 => Named::FavoriteRecall0, + NamedKey::FavoriteRecall1 => Named::FavoriteRecall1, + NamedKey::FavoriteRecall2 => Named::FavoriteRecall2, + NamedKey::FavoriteRecall3 => Named::FavoriteRecall3, + NamedKey::FavoriteStore0 => Named::FavoriteStore0, + NamedKey::FavoriteStore1 => Named::FavoriteStore1, + NamedKey::FavoriteStore2 => Named::FavoriteStore2, + NamedKey::FavoriteStore3 => Named::FavoriteStore3, + NamedKey::Guide => Named::Guide, + NamedKey::GuideNextDay => Named::GuideNextDay, + NamedKey::GuidePreviousDay => Named::GuidePreviousDay, + NamedKey::Info => Named::Info, + NamedKey::InstantReplay => Named::InstantReplay, + NamedKey::Link => Named::Link, + NamedKey::ListProgram => Named::ListProgram, + NamedKey::LiveContent => Named::LiveContent, + NamedKey::Lock => Named::Lock, + NamedKey::MediaApps => Named::MediaApps, + NamedKey::MediaAudioTrack => Named::MediaAudioTrack, + NamedKey::MediaLast => Named::MediaLast, + NamedKey::MediaSkipBackward => Named::MediaSkipBackward, + NamedKey::MediaSkipForward => Named::MediaSkipForward, + NamedKey::MediaStepBackward => Named::MediaStepBackward, + NamedKey::MediaStepForward => Named::MediaStepForward, + NamedKey::MediaTopMenu => Named::MediaTopMenu, + NamedKey::NavigateIn => Named::NavigateIn, + NamedKey::NavigateNext => Named::NavigateNext, + NamedKey::NavigateOut => Named::NavigateOut, + NamedKey::NavigatePrevious => Named::NavigatePrevious, + NamedKey::NextFavoriteChannel => Named::NextFavoriteChannel, + NamedKey::NextUserProfile => Named::NextUserProfile, + NamedKey::OnDemand => Named::OnDemand, + NamedKey::Pairing => Named::Pairing, + NamedKey::PinPDown => Named::PinPDown, + NamedKey::PinPMove => Named::PinPMove, + NamedKey::PinPToggle => Named::PinPToggle, + NamedKey::PinPUp => Named::PinPUp, + NamedKey::PlaySpeedDown => Named::PlaySpeedDown, + NamedKey::PlaySpeedReset => Named::PlaySpeedReset, + NamedKey::PlaySpeedUp => Named::PlaySpeedUp, + NamedKey::RandomToggle => Named::RandomToggle, + NamedKey::RcLowBattery => Named::RcLowBattery, + NamedKey::RecordSpeedNext => Named::RecordSpeedNext, + NamedKey::RfBypass => Named::RfBypass, + NamedKey::ScanChannelsToggle => Named::ScanChannelsToggle, + NamedKey::ScreenModeNext => Named::ScreenModeNext, + NamedKey::Settings => Named::Settings, + NamedKey::SplitScreenToggle => Named::SplitScreenToggle, + NamedKey::STBInput => Named::STBInput, + NamedKey::STBPower => Named::STBPower, + NamedKey::Subtitle => Named::Subtitle, + NamedKey::Teletext => Named::Teletext, + NamedKey::VideoModeNext => Named::VideoModeNext, + NamedKey::Wink => Named::Wink, + NamedKey::ZoomToggle => Named::ZoomToggle, + NamedKey::F1 => Named::F1, + NamedKey::F2 => Named::F2, + NamedKey::F3 => Named::F3, + NamedKey::F4 => Named::F4, + NamedKey::F5 => Named::F5, + NamedKey::F6 => Named::F6, + NamedKey::F7 => Named::F7, + NamedKey::F8 => Named::F8, + NamedKey::F9 => Named::F9, + NamedKey::F10 => Named::F10, + NamedKey::F11 => Named::F11, + NamedKey::F12 => Named::F12, + NamedKey::F13 => Named::F13, + NamedKey::F14 => Named::F14, + NamedKey::F15 => Named::F15, + NamedKey::F16 => Named::F16, + NamedKey::F17 => Named::F17, + NamedKey::F18 => Named::F18, + NamedKey::F19 => Named::F19, + NamedKey::F20 => Named::F20, + NamedKey::F21 => Named::F21, + NamedKey::F22 => Named::F22, + NamedKey::F23 => Named::F23, + NamedKey::F24 => Named::F24, + NamedKey::F25 => Named::F25, + NamedKey::F26 => Named::F26, + NamedKey::F27 => Named::F27, + NamedKey::F28 => Named::F28, + NamedKey::F29 => Named::F29, + NamedKey::F30 => Named::F30, + NamedKey::F31 => Named::F31, + NamedKey::F32 => Named::F32, + NamedKey::F33 => Named::F33, + NamedKey::F34 => Named::F34, + NamedKey::F35 => Named::F35, + _ => return keyboard::Key::Unidentified, + }), + _ => keyboard::Key::Unidentified, } } diff --git a/neothesia/src/iced_utils/iced_manager.rs b/neothesia/src/iced_utils/iced_manager.rs index 54ff4bc5..c69e10ce 100644 --- a/neothesia/src/iced_utils/iced_manager.rs +++ b/neothesia/src/iced_utils/iced_manager.rs @@ -1,7 +1,7 @@ use iced_core::text::Renderer; pub struct IcedManager { - pub renderer: iced_wgpu::Renderer, + pub renderer: iced_wgpu::Renderer, pub viewport: iced_wgpu::graphics::Viewport, pub debug: iced_runtime::Debug, } diff --git a/neothesia/src/iced_utils/iced_state.rs b/neothesia/src/iced_utils/iced_state.rs index 2390004e..0bf34f25 100644 --- a/neothesia/src/iced_utils/iced_state.rs +++ b/neothesia/src/iced_utils/iced_state.rs @@ -8,7 +8,7 @@ use iced_style::Theme; use super::{iced_clipboard::DummyClipboard, iced_conversion}; use crate::target::Target; -pub type Element<'a, M> = iced_core::Element<'a, M, iced_wgpu::Renderer>; +pub type Element<'a, M> = iced_core::Element<'a, M, Theme, iced_wgpu::Renderer>; /// The core of a user interface application following The Elm Architecture. pub trait Program: Sized { @@ -197,7 +197,7 @@ fn build_user_interface<'a, P: Program>( cache: user_interface::Cache, size: Size, target: &mut Target, -) -> UserInterface<'a, P::Message, iced_wgpu::Renderer> { +) -> UserInterface<'a, P::Message, Theme, iced_wgpu::Renderer> { let view = program.view(target); UserInterface::build(view, size, cache, &mut target.iced_manager.renderer) } diff --git a/neothesia/src/iced_utils/mod.rs b/neothesia/src/iced_utils/mod.rs index 569a609e..10d2ffcb 100644 --- a/neothesia/src/iced_utils/mod.rs +++ b/neothesia/src/iced_utils/mod.rs @@ -1,7 +1,6 @@ mod iced_clipboard; mod iced_manager; -pub use iced_clipboard::DummyClipboard; pub use iced_manager::IcedManager; pub mod iced_conversion; diff --git a/neothesia/src/scene/menu_scene/iced_menu/mod.rs b/neothesia/src/scene/menu_scene/iced_menu/mod.rs index 66186c5d..0a7608ee 100644 --- a/neothesia/src/scene/menu_scene/iced_menu/mod.rs +++ b/neothesia/src/scene/menu_scene/iced_menu/mod.rs @@ -10,6 +10,7 @@ use iced_core::{ Alignment, Length, Padding, }; use iced_runtime::Command; +use iced_style::Theme; use iced_widget::{column as col, container, image, row, text, vertical_space}; use crate::{ @@ -160,7 +161,7 @@ impl Program for AppUi { } fn mouse_input(&self, event: &iced_core::mouse::Event, _target: &Target) -> Option { - if let iced_core::mouse::Event::ButtonPressed(iced_core::mouse::Button::Other(99)) = event { + if let iced_core::mouse::Event::ButtonPressed(iced_core::mouse::Button::Back) = event { Some(Message::GoToPage(self.current.previous_step())) } else { None @@ -172,34 +173,42 @@ impl Program for AppUi { event: &iced_runtime::keyboard::Event, _target: &Target, ) -> Option { - use iced_runtime::keyboard::{Event, KeyCode}; - - if let Event::KeyPressed { key_code, .. } = event { - match key_code { - KeyCode::Tab => match self.current { + use iced_runtime::keyboard::{key::Named, Event, Key}; + + match event { + Event::KeyPressed { + key: Key::Named(key), + .. + } => match key { + Named::Tab => match self.current { Step::Main => Some(midi_file_picker::open().into()), Step::Settings => Some(Message::Settings(SettingsMessage::OpenSoundFontPicker)), _ => None, }, - KeyCode::S => match self.current { - Step::Main => Some(Message::GoToPage(Step::Settings)), - _ => None, - }, - KeyCode::Enter => match self.current { + Named::Enter => match self.current { Step::Exit => Some(Message::ExitApp), Step::Main => Some(Message::Play), Step::TrackSelection => Some(Message::Play), _ => None, }, - KeyCode::T => match self.current { + Named::Escape => Some(Message::GoToPage(self.current.previous_step())), + _ => None, + }, + Event::KeyPressed { + key: Key::Character(ch), + .. + } => match ch.as_ref() { + "s" => match self.current { + Step::Main => Some(Message::GoToPage(Step::Settings)), + _ => None, + }, + "t" => match self.current { Step::Main => Some(Message::GoToPage(Step::TrackSelection)), _ => None, }, - KeyCode::Escape => Some(Message::GoToPage(self.current.previous_step())), _ => None, - } - } else { - None + }, + _ => None, } } @@ -322,7 +331,7 @@ impl<'a> Step { } } -fn centered_text<'a>(label: impl ToString) -> iced_widget::Text<'a, Renderer> { +fn centered_text<'a>(label: impl ToString) -> iced_widget::Text<'a, Theme, Renderer> { text(label) .horizontal_alignment(Horizontal::Center) .vertical_alignment(Vertical::Center) @@ -330,7 +339,7 @@ fn centered_text<'a>(label: impl ToString) -> iced_widget::Text<'a, Renderer> { fn top_padded<'a, MSG: 'a>( content: impl Into>, -) -> iced_widget::Column<'a, MSG, Renderer> { +) -> iced_widget::Column<'a, MSG, Theme, Renderer> { let spacer = vertical_space(Length::FillPortion(1)); let content = container(content) .height(Length::FillPortion(4)) @@ -345,7 +354,7 @@ fn top_padded<'a, MSG: 'a>( fn center_x<'a, MSG: 'a>( content: impl Into>, -) -> iced_widget::Container<'a, MSG, Renderer> { +) -> iced_widget::Container<'a, MSG, Theme, Renderer> { container(content) .width(Length::Fill) .height(Length::Fill) diff --git a/neothesia/src/scene/menu_scene/iced_menu/theme.rs b/neothesia/src/scene/menu_scene/iced_menu/theme.rs index 3827f610..4de0425c 100644 --- a/neothesia/src/scene/menu_scene/iced_menu/theme.rs +++ b/neothesia/src/scene/menu_scene/iced_menu/theme.rs @@ -1,6 +1,6 @@ use std::rc::Rc; -use iced_core::BorderRadius; +use iced_core::border::{Border, Radius}; use iced_graphics::core::Color; use iced_style::{button, pick_list}; @@ -24,9 +24,11 @@ impl iced_style::pick_list::StyleSheet for PickListStyle { text_color: Color::WHITE, background: iced_core::Background::Color(Color::from_rgba8(74, 68, 88, 1.0)), placeholder_color: Color::WHITE, - border_radius: iced_core::BorderRadius::from(5.0), - border_width: 0.0, - border_color: SURFACE, + border: Border { + radius: Radius::from(5.0), + width: 0.0, + color: SURFACE, + }, handle_color: Color::WHITE, } } @@ -54,9 +56,11 @@ impl iced_style::menu::StyleSheet for MenuStyle { iced_style::menu::Appearance { text_color: Color::WHITE, background: iced_core::Background::from(iced_core::Color::from_rgba8(27, 25, 32, 1.0)), - border_width: 0.0, - border_radius: iced_core::BorderRadius::from(5.0), - border_color: SURFACE, + border: Border { + width: 0.0, + radius: Radius::from(5.0), + color: SURFACE, + }, selected_text_color: Color::WHITE, selected_background: iced_core::Background::Color(accent), } @@ -75,8 +79,11 @@ impl iced_style::button::StyleSheet for ButtonStyle { fn active(&self, _style: &Self::Style) -> button::Appearance { button::Appearance { text_color: Color::WHITE, - border_width: 0.0, - border_radius: BorderRadius::from(5.0), + border: Border { + width: 0.0, + radius: Radius::from(5.0), + ..Default::default() + }, background: Some(iced_core::Background::Color(Color::from_rgba8( 74, 68, 88, 1.0, ))), @@ -107,16 +114,24 @@ impl iced_style::button::StyleSheet for RoundButtonStyle { type Style = iced_style::Theme; fn active(&self, style: &Self::Style) -> button::Appearance { + let def = ButtonStyle::active(&ButtonStyle, style); button::Appearance { - border_radius: BorderRadius::from(f32::MAX), - ..ButtonStyle::active(&ButtonStyle, style) + border: Border { + radius: Radius::from(f32::MAX), + ..def.border + }, + ..def } } fn hovered(&self, style: &Self::Style) -> button::Appearance { + let def = ButtonStyle::hovered(&ButtonStyle, style); button::Appearance { - border_radius: BorderRadius::from(f32::MAX), - ..ButtonStyle::hovered(&ButtonStyle, style) + border: Border { + radius: Radius::from(f32::MAX), + ..def.border + }, + ..def } } } @@ -135,9 +150,11 @@ impl iced_style::checkbox::StyleSheet for CheckboxStyle { iced_style::checkbox::Appearance { background: if is_checked { active } else { SURFACE }.into(), text_color: Some(Color::WHITE), - border_radius: iced_core::BorderRadius::from(2.0), - border_width: 1.0, - border_color: active, + border: Border { + radius: Radius::from(2.0), + width: 1.0, + color: active, + }, icon_color: Color::WHITE, } } @@ -153,6 +170,11 @@ impl iced_style::checkbox::StyleSheet for CheckboxStyle { ..self.active(style, is_checked) } } + + fn disabled(&self, style: &Self::Style, is_checked: bool) -> iced_style::checkbox::Appearance { + // TODO + self.active(style, is_checked) + } } pub fn toggler() -> iced_style::theme::Toggler { diff --git a/neothesia/src/scene/menu_scene/icons.rs b/neothesia/src/scene/menu_scene/icons.rs index 240ad8c7..c44b2b56 100644 --- a/neothesia/src/scene/menu_scene/icons.rs +++ b/neothesia/src/scene/menu_scene/icons.rs @@ -1,15 +1,17 @@ +use iced_style::Theme; + use super::Renderer; static ICONS: iced_core::Font = iced_core::Font::with_name("bootstrap-icons"); -pub fn play_icon<'a>() -> iced_widget::Text<'a, Renderer> { +pub fn play_icon<'a>() -> iced_widget::Text<'a, Theme, Renderer> { iced_widget::text('\u{f49d}').font(ICONS) } -pub fn note_list_icon<'a>() -> iced_widget::Text<'a, Renderer> { +pub fn note_list_icon<'a>() -> iced_widget::Text<'a, Theme, Renderer> { iced_widget::text('\u{f451}').font(ICONS) } -pub fn left_arrow_icon<'a>() -> iced_widget::Text<'a, Renderer> { +pub fn left_arrow_icon<'a>() -> iced_widget::Text<'a, Theme, Renderer> { iced_widget::text('\u{f12f}').font(ICONS) } diff --git a/neothesia/src/scene/menu_scene/layout.rs b/neothesia/src/scene/menu_scene/layout.rs index fb35cd12..d75beafc 100644 --- a/neothesia/src/scene/menu_scene/layout.rs +++ b/neothesia/src/scene/menu_scene/layout.rs @@ -1,5 +1,6 @@ use crate::iced_utils::iced_state::Element; -use iced_core::{Alignment, Length}; +use iced_core::{Alignment, Length, Renderer}; +use iced_style::Theme; use iced_widget::{column as col, row}; pub struct Layout<'a, Message> { @@ -126,11 +127,11 @@ impl<'a, M: 'static> From> for Element<'a, M> { } pub trait PushIf<'a, M, R> { - fn push_if(self, item: Option>>) -> Self; + fn push_if(self, item: Option>>) -> Self; } -impl<'a, M, R> PushIf<'a, M, R> for iced_widget::Row<'a, M, R> { - fn push_if(self, item: Option>>) -> Self { +impl<'a, M, R: Renderer> PushIf<'a, M, R> for iced_widget::Row<'a, M, Theme, R> { + fn push_if(self, item: Option>>) -> Self { if let Some(item) = item { self.push(item) } else { @@ -139,8 +140,8 @@ impl<'a, M, R> PushIf<'a, M, R> for iced_widget::Row<'a, M, R> { } } -impl<'a, M, R> PushIf<'a, M, R> for iced_widget::Column<'a, M, R> { - fn push_if(self, item: Option>>) -> Self { +impl<'a, M, R: Renderer> PushIf<'a, M, R> for iced_widget::Column<'a, M, Theme, R> { + fn push_if(self, item: Option>>) -> Self { if let Some(item) = item { self.push(item) } else { @@ -152,7 +153,10 @@ impl<'a, M, R> PushIf<'a, M, R> for iced_widget::Column<'a, M, R> { impl<'a, M: 'a> PushIf<'a, M, super::Renderer> for super::preferences_group::PreferencesGroup<'a, M> { - fn push_if(self, item: Option>>) -> Self { + fn push_if( + self, + item: Option>>, + ) -> Self { if let Some(item) = item { self.push(item) } else { diff --git a/neothesia/src/scene/menu_scene/mod.rs b/neothesia/src/scene/menu_scene/mod.rs index e98a9b6f..69b26aea 100644 --- a/neothesia/src/scene/menu_scene/mod.rs +++ b/neothesia/src/scene/menu_scene/mod.rs @@ -13,7 +13,6 @@ mod wrap; use std::time::Duration; use iced_menu::AppUi; -use iced_style::Theme; use neothesia_core::render::BgPipeline; use wgpu_jumpstart::{TransformUniform, Uniform}; @@ -28,7 +27,7 @@ use crate::{ target::Target, }; -type Renderer = iced_wgpu::Renderer; +type Renderer = iced_wgpu::Renderer; pub struct MenuScene { bg_pipeline: BgPipeline, @@ -99,7 +98,7 @@ impl Scene for MenuScene { let modifiers = ModifiersState::default(); if let Some(event) = iced_conversion::window_event( - event, + event.clone(), target.iced_manager.viewport.scale_factor(), modifiers, ) { diff --git a/neothesia/src/scene/menu_scene/neo_btn.rs b/neothesia/src/scene/menu_scene/neo_btn.rs index bca9bc76..41439811 100644 --- a/neothesia/src/scene/menu_scene/neo_btn.rs +++ b/neothesia/src/scene/menu_scene/neo_btn.rs @@ -1,13 +1,15 @@ use super::Renderer; use iced_core::{ alignment::{Horizontal, Vertical}, + border::Radius, layout, mouse, renderer::Style, widget::{tree, Tree}, - Background, Clipboard, Color, Element, Event, Layout, Length, Padding, Point, Rectangle, Shell, - Widget, + Background, Border, Clipboard, Color, Element, Event, Layout, Length, Padding, Rectangle, + Shell, Size, Widget, }; use iced_graphics::Primitive; +use iced_style::Theme; use iced_widget::text; /// Creates a new [`Button`] with the provided content. @@ -28,14 +30,14 @@ pub struct NeoBtn<'a, Message> { padding: f32, border_radius: f32, disabled: bool, - content: Element<'a, Message, Renderer>, + content: Element<'a, Message, Theme, Renderer>, on_press: Option, } impl<'a, Message: Clone> NeoBtn<'a, Message> { pub fn new(content: E) -> Self where - E: Into>, + E: Into>, { Self { on_press: None, @@ -81,7 +83,7 @@ impl<'a, Message: Clone> NeoBtn<'a, Message> { } } -impl<'a, Message: Clone> Widget for NeoBtn<'a, Message> { +impl<'a, Message: Clone> Widget for NeoBtn<'a, Message> { fn tag(&self) -> tree::Tag { tree::Tag::of::() } @@ -98,12 +100,11 @@ impl<'a, Message: Clone> Widget for NeoBtn<'a, Message> { tree.diff_children(std::slice::from_ref(&self.content)) } - fn width(&self) -> Length { - self.width - } - - fn height(&self) -> Length { - self.height + fn size(&self) -> Size { + Size { + width: self.width, + height: self.height, + } } fn layout( @@ -112,24 +113,19 @@ impl<'a, Message: Clone> Widget for NeoBtn<'a, Message> { renderer: &Renderer, limits: &layout::Limits, ) -> layout::Node { - let limits = limits - .min_width(self.min_width) - .min_height(self.min_height) - .width(self.width) - .height(self.height) - .pad(Padding::new(self.padding)); - - let mut content = self - .content - .as_widget() - .layout(&mut tree.children[0], renderer, &limits); - content.move_to(Point::new(self.padding as _, self.padding as _)); - - let size = limits - .resolve(content.size()) - .pad(Padding::new(self.padding)); - - layout::Node::with_children(size, vec![content]) + let limits = limits.min_width(self.min_width).min_height(self.min_height); + + iced_core::layout::padded( + &limits, + self.width, + self.height, + Padding::new(self.padding), + |limits| { + self.content + .as_widget() + .layout(&mut tree.children[0], renderer, limits) + }, + ) } fn mouse_interaction( @@ -237,9 +233,12 @@ impl<'a, Message: Clone> Widget for NeoBtn<'a, Message> { ..bounds }, background: Background::Color(colors.0), - border_radius: iced_core::BorderRadius::from(self.border_radius).into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: Radius::from(self.border_radius), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: iced_core::Shadow::default(), }; renderer.draw_primitive(bg); @@ -255,9 +254,12 @@ impl<'a, Message: Clone> Widget for NeoBtn<'a, Message> { ..bounds }, background: Background::Color(colors.1), - border_radius: iced_core::BorderRadius::from(self.border_radius).into(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: Radius::from(self.border_radius), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: iced_core::Shadow::default(), }), }; renderer.draw_primitive(btn_bar); @@ -286,11 +288,11 @@ impl<'a, Message: Clone> Widget for NeoBtn<'a, Message> { } } -impl<'a, Message> From> for Element<'a, Message, Renderer> +impl<'a, Message> From> for Element<'a, Message, Theme, Renderer> where Message: 'a + Clone, { - fn from(from: NeoBtn<'a, Message>) -> Element<'a, Message, Renderer> { + fn from(from: NeoBtn<'a, Message>) -> Element<'a, Message, Theme, Renderer> { Element::new(from) } } diff --git a/neothesia/src/scene/menu_scene/piano_range.rs b/neothesia/src/scene/menu_scene/piano_range.rs index 1df26e14..0cef1341 100644 --- a/neothesia/src/scene/menu_scene/piano_range.rs +++ b/neothesia/src/scene/menu_scene/piano_range.rs @@ -1,16 +1,20 @@ -use iced_core::{renderer::Quad, Background, BorderRadius, Color, Rectangle, Size, Vector, Widget}; +use iced_core::{ + border::{Border, Radius}, + renderer::Quad, + Background, Color, Length, Rectangle, Size, Vector, Widget, +}; +use iced_style::Theme; use crate::iced_utils::iced_state::Element; pub struct PianoRange(pub std::ops::RangeInclusive); -impl Widget for PianoRange { - fn width(&self) -> iced_core::Length { - iced_core::Length::Fill - } - - fn height(&self) -> iced_core::Length { - iced_core::Length::Fixed(100.0) +impl Widget for PianoRange { + fn size(&self) -> Size { + Size { + width: iced_core::Length::Fill, + height: iced_core::Length::Fixed(100.0), + } } fn layout( @@ -19,19 +23,20 @@ impl Widget for PianoRange { _renderer: &R, limits: &iced_core::layout::Limits, ) -> iced_core::layout::Node { - let width = Widget::::width(self); - let height = Widget::::height(self); + let size = Widget::::size(self); + // + // let limits = limits.width(width).height(height); + // let size = limits.resolve(Size::ZERO); + // iced_core::layout::Node::new(size) - let limits = limits.width(width).height(height); - let size = limits.resolve(Size::ZERO); - iced_core::layout::Node::new(size) + iced_core::layout::atomic(limits, size.width, size.height) } fn draw( &self, _tree: &iced_core::widget::Tree, renderer: &mut R, - _theme: &::Theme, + _theme: &Theme, _style: &iced_core::renderer::Style, layout: iced_core::Layout<'_>, _cursor: iced_core::mouse::Cursor, @@ -66,15 +71,18 @@ impl Widget for PianoRange { renderer.fill_quad( Quad { bounds, - border_radius: if n == 0 { - BorderRadius::from([12.0, 0.0, 5.0, 12.0]) - } else if neutral.peek().is_none() { - BorderRadius::from([0.0, 12.0, 12.0, 5.0]) - } else { - BorderRadius::from([0.0, 0.0, 5.0, 5.0]) + border: Border { + radius: if n == 0 { + Radius::from([12.0, 0.0, 5.0, 12.0]) + } else if neutral.peek().is_none() { + Radius::from([0.0, 12.0, 12.0, 5.0]) + } else { + Radius::from([0.0, 0.0, 5.0, 5.0]) + }, + width: 0.0, + color: Color::TRANSPARENT, }, - border_width: 0.0, - border_color: Color::TRANSPARENT, + shadow: Default::default(), }, Background::Color(Color::WHITE), ); @@ -91,9 +99,12 @@ impl Widget for PianoRange { renderer.fill_quad( Quad { bounds, - border_radius: BorderRadius::default(), - border_width: 0.0, - border_color: Color::TRANSPARENT, + border: Border { + radius: Radius::default(), + width: 0.0, + color: Color::TRANSPARENT, + }, + shadow: Default::default(), }, Background::Color(Color::BLACK), ); diff --git a/neothesia/src/scene/menu_scene/preferences_group/mod.rs b/neothesia/src/scene/menu_scene/preferences_group/mod.rs index 3bf9f812..250fbeb9 100644 --- a/neothesia/src/scene/menu_scene/preferences_group/mod.rs +++ b/neothesia/src/scene/menu_scene/preferences_group/mod.rs @@ -1,4 +1,5 @@ use iced_core::{Font, Length}; +use iced_style::Theme; use iced_widget::{column, container, row, text}; use crate::iced_utils::iced_state::Element; @@ -82,7 +83,7 @@ fn tripple_split<'a, T: 'a>( prefix: Option>, center: Option>, suffix: Option>, -) -> iced_widget::Row<'a, T, Renderer> { +) -> iced_widget::Row<'a, T, Theme, Renderer> { let mut row = row![]; row = row.push(row![].push_if(prefix).width(Length::Shrink)); @@ -113,7 +114,7 @@ fn group_header<'a, T: 'a>(data: PreferencesGroupHeader) -> Element<'a, T> { fn title<'a, T: 'a>( title: Option, subtitle: Option, -) -> iced_widget::Column<'a, T, Renderer> { +) -> iced_widget::Column<'a, T, Theme, Renderer> { column![] .push_if(title.map(|title| text(title).size(14.6))) .push_if(subtitle.map(|subtitle| text(subtitle).size(12.2).style(theme::subtitle()))) @@ -163,7 +164,7 @@ impl<'a, MSG: 'a> ActionRow<'a, MSG> { self } - fn build(self) -> iced_widget::Row<'a, MSG, Renderer> { + fn build(self) -> iced_widget::Row<'a, MSG, Theme, Renderer> { let center = if self.title.is_some() || self.subtitle.is_some() { Some(title(self.title, self.subtitle).into()) } else { diff --git a/neothesia/src/scene/menu_scene/preferences_group/theme.rs b/neothesia/src/scene/menu_scene/preferences_group/theme.rs index 87ceeb2e..b8458be8 100644 --- a/neothesia/src/scene/menu_scene/preferences_group/theme.rs +++ b/neothesia/src/scene/menu_scene/preferences_group/theme.rs @@ -1,4 +1,4 @@ -use iced_core::BorderRadius; +use iced_core::border::{Border, Radius}; pub fn card() -> iced_style::theme::Container { iced_style::theme::Container::Custom(Box::new(ContainerStyle)) @@ -14,7 +14,10 @@ impl iced_style::container::StyleSheet for ContainerStyle { background: Some(iced_core::Background::from(iced_core::Color::from_rgba8( 37, 35, 42, 1.0, ))), - border_radius: BorderRadius::from(12.0), + border: Border { + radius: Radius::from(12.0), + ..Default::default() + }, ..Default::default() } } diff --git a/neothesia/src/scene/menu_scene/scroll_listener/mod.rs b/neothesia/src/scene/menu_scene/scroll_listener/mod.rs index 2423926f..626ccda2 100644 --- a/neothesia/src/scene/menu_scene/scroll_listener/mod.rs +++ b/neothesia/src/scene/menu_scene/scroll_listener/mod.rs @@ -1,4 +1,5 @@ -use iced_core::{mouse::ScrollDelta, Widget}; +use iced_core::{mouse::ScrollDelta, Length, Size, Widget}; +use iced_style::Theme; use crate::iced_utils::iced_state::Element; @@ -16,13 +17,9 @@ impl<'a, M> ScrollListener<'a, M> { } } -impl<'a, M> Widget for ScrollListener<'a, M> { - fn width(&self) -> iced_core::Length { - self.content.as_widget().width() - } - - fn height(&self) -> iced_core::Length { - self.content.as_widget().height() +impl<'a, M> Widget for ScrollListener<'a, M> { + fn size(&self) -> Size { + self.content.as_widget().size() } fn layout( @@ -38,7 +35,7 @@ impl<'a, M> Widget for ScrollListener<'a, M> { &self, tree: &iced_core::widget::Tree, renderer: &mut super::Renderer, - theme: &::Theme, + theme: &Theme, style: &iced_core::renderer::Style, layout: iced_core::Layout<'_>, cursor: iced_core::mouse::Cursor, @@ -136,10 +133,11 @@ impl<'a, M> Widget for ScrollListener<'a, M> { state: &'b mut iced_core::widget::Tree, layout: iced_core::Layout<'_>, renderer: &super::Renderer, - ) -> Option> { + translation: iced_core::Vector, + ) -> Option> { self.content .as_widget_mut() - .overlay(state, layout, renderer) + .overlay(state, layout, renderer, translation) } } diff --git a/neothesia/src/scene/menu_scene/segment_button/mod.rs b/neothesia/src/scene/menu_scene/segment_button/mod.rs index 7bd36a98..ba6b3e66 100644 --- a/neothesia/src/scene/menu_scene/segment_button/mod.rs +++ b/neothesia/src/scene/menu_scene/segment_button/mod.rs @@ -1,12 +1,15 @@ +use crate::iced_utils::iced_state::Element; + use super::Renderer; use iced_core::{ alignment::{Horizontal, Vertical}, Color, Length, }; +use iced_style::Theme; mod theme; -fn segment<'a, MSG: 'a>(label: &str) -> iced_widget::Button<'a, MSG, Renderer> { +fn segment<'a, MSG: 'a>(label: &str) -> iced_widget::Button<'a, MSG, Theme, Renderer> { iced_widget::button( iced_widget::text(label) .horizontal_alignment(Horizontal::Center) @@ -53,7 +56,7 @@ impl<'a, MSG: Clone + 'a> SegmentButton { self } - pub fn build(mut self) -> iced_widget::Container<'a, MSG, Renderer> { + pub fn build(mut self) -> iced_widget::Container<'a, MSG, Theme, Renderer> { let mut new = Vec::new(); let last_id = self.buttons.len() - 1; @@ -91,10 +94,9 @@ impl<'a, MSG: Clone + 'a> SegmentButton { } new.push(last); - iced_widget::container(iced_widget::row( - new.into_iter().map(|btn| btn.into()).collect(), - )) - .height(40) - .width(Length::Fill) + let new: Vec> = new.into_iter().map(|btn| btn.into()).collect(); + iced_widget::container(iced_widget::row(new)) + .height(40) + .width(Length::Fill) } } diff --git a/neothesia/src/scene/menu_scene/segment_button/theme.rs b/neothesia/src/scene/menu_scene/segment_button/theme.rs index 1e293d3f..e7f21c1d 100644 --- a/neothesia/src/scene/menu_scene/segment_button/theme.rs +++ b/neothesia/src/scene/menu_scene/segment_button/theme.rs @@ -1,4 +1,7 @@ -use iced_core::{BorderRadius, Color}; +use iced_core::{ + border::{Border, Radius}, + Color, +}; use iced_style::button; pub enum ButtonSegmentKind { @@ -22,9 +25,9 @@ impl iced_style::button::StyleSheet for SegmentButtonStyle { fn active(&self, _style: &Self::Style) -> button::Appearance { let border_radius = match self.0 { - ButtonSegmentKind::Start => BorderRadius::from([255.0, 0.0, 0.0, 255.0]), - ButtonSegmentKind::Center => BorderRadius::from(0.0), - ButtonSegmentKind::End => BorderRadius::from([0.0, 255.0, 255.0, 0.0]), + ButtonSegmentKind::Start => Radius::from([255.0, 0.0, 0.0, 255.0]), + ButtonSegmentKind::Center => Radius::from(0.0), + ButtonSegmentKind::End => Radius::from([0.0, 255.0, 255.0, 0.0]), }; let active = self.1; @@ -38,9 +41,11 @@ impl iced_style::button::StyleSheet for SegmentButtonStyle { button::Appearance { text_color: Color::WHITE, - border_color: Color::TRANSPARENT, - border_width: 0.0, - border_radius, + border: Border { + color: Color::TRANSPARENT, + width: 0.0, + radius: border_radius, + }, background, ..Default::default() } diff --git a/neothesia/src/scene/menu_scene/track_card/mod.rs b/neothesia/src/scene/menu_scene/track_card/mod.rs index df47a42d..3eacbf26 100644 --- a/neothesia/src/scene/menu_scene/track_card/mod.rs +++ b/neothesia/src/scene/menu_scene/track_card/mod.rs @@ -1,12 +1,13 @@ use super::Renderer; use iced_core::{Alignment, Color, Element}; +use iced_style::Theme; mod theme; pub struct TrackCard<'a, MSG> { title: String, subtitle: String, - body: Option>, + body: Option>, track_color: Color, on_icon_press: Option, } @@ -42,12 +43,12 @@ impl<'a, MSG: 'a + Clone> TrackCard<'a, MSG> { self } - pub fn body(mut self, body: impl Into>) -> Self { + pub fn body(mut self, body: impl Into>) -> Self { self.body = Some(body.into()); self } - pub fn build(self) -> iced_widget::Container<'a, MSG, Renderer> { + pub fn build(self) -> iced_widget::Container<'a, MSG, Theme, Renderer> { let header = { iced_widget::row![ iced_widget::button(iced_widget::text("")) diff --git a/neothesia/src/scene/menu_scene/track_card/theme.rs b/neothesia/src/scene/menu_scene/track_card/theme.rs index 08f00943..ac2ba3a7 100644 --- a/neothesia/src/scene/menu_scene/track_card/theme.rs +++ b/neothesia/src/scene/menu_scene/track_card/theme.rs @@ -1,4 +1,4 @@ -use iced_core::BorderRadius; +use iced_core::border::{Border, Radius}; pub fn card() -> iced_style::theme::Container { iced_style::theme::Container::Custom(Box::new(ContainerStyle)) @@ -14,7 +14,10 @@ impl iced_style::container::StyleSheet for ContainerStyle { background: Some(iced_core::Background::from(iced_core::Color::from_rgba8( 37, 35, 42, 1.0, ))), - border_radius: BorderRadius::from(12.0), + border: Border { + radius: Radius::from(12.0), + ..Default::default() + }, ..Default::default() } } @@ -32,7 +35,10 @@ impl iced_style::button::StyleSheet for TrackIconButtonStyle { fn active(&self, _style: &Self::Style) -> iced_style::button::Appearance { iced_style::button::Appearance { background: Some(iced_core::Background::from(self.0)), - border_radius: BorderRadius::from(255.0), + border: Border { + radius: Radius::from(255.0), + ..Default::default() + }, ..Default::default() } } diff --git a/neothesia/src/scene/menu_scene/wrap.rs b/neothesia/src/scene/menu_scene/wrap.rs index c7e4a9cd..4b659c3c 100644 --- a/neothesia/src/scene/menu_scene/wrap.rs +++ b/neothesia/src/scene/menu_scene/wrap.rs @@ -1,6 +1,7 @@ //! A widget that displays its children in multiple horizontal or vertical runs. //! //! *This API requires the following crate features to be activated: `wrap`* +use iced_style::Theme; use iced_widget::core::{ self, event, layout::{Limits, Node}, @@ -11,13 +12,14 @@ use iced_widget::core::{ Widget, }; +use core::Vector; use std::marker::PhantomData; /// A container that distributes its contents horizontally. #[allow(missing_debug_implementations)] pub struct Wrap<'a, Message, Direction, Renderer = super::Renderer> { /// The elements to distribute. - pub elements: Vec>, + pub elements: Vec>, /// The alignment of the [`Wrap`](Wrap). pub alignment: Alignment, /// The width of the [`Wrap`](Wrap). @@ -52,7 +54,7 @@ impl<'a, Message, Renderer> Wrap<'a, Message, direction::Horizontal, Renderer> { /// It expects: /// * the vector containing the [`Element`]s for this [`Wrap`](Wrap). #[must_use] - pub fn with_elements(elements: Vec>) -> Self { + pub fn with_elements(elements: Vec>) -> Self { Self { elements, ..Wrap::default() @@ -72,7 +74,7 @@ impl<'a, Message, Renderer> Wrap<'a, Message, direction::Vertical, Renderer> { /// It expects: /// * the vector containing the [`Element`]s for this [`Wrap`](Wrap). #[must_use] - pub fn with_elements_vertical(elements: Vec>) -> Self { + pub fn with_elements_vertical(elements: Vec>) -> Self { Self { elements, ..Wrap::default() @@ -148,14 +150,14 @@ impl<'a, Message, Renderer, Direction> Wrap<'a, Message, Direction, Renderer> { #[must_use] pub fn push(mut self, element: E) -> Self where - E: Into>, + E: Into>, { self.elements.push(element.into()); self } } -impl<'a, Message, Renderer, Direction> Widget +impl<'a, Message, Renderer, Direction> Widget for Wrap<'a, Message, Direction, Renderer> where Self: WrapLayout, @@ -169,12 +171,11 @@ where tree.diff_children(&self.elements); } - fn width(&self) -> Length { - self.width - } - - fn height(&self) -> Length { - self.height + fn size(&self) -> Size { + Size { + width: self.width, + height: self.height, + } } fn layout(&self, tree: &mut Tree, renderer: &Renderer, limits: &Limits) -> Node { @@ -216,13 +217,16 @@ where state: &'b mut Tree, layout: Layout<'_>, renderer: &Renderer, - ) -> Option> { + translation: Vector, + ) -> Option> { self.elements .iter_mut() .zip(&mut state.children) .zip(layout.children()) .find_map(|((child, state), layout)| { - child.as_widget_mut().overlay(state, layout, renderer) + child + .as_widget_mut() + .overlay(state, layout, renderer, translation) }) } @@ -251,7 +255,7 @@ where &self, state: &Tree, renderer: &mut Renderer, - theme: &::Theme, + theme: &Theme, style: &renderer::Style, layout: Layout<'_>, cursor: Cursor, @@ -290,27 +294,27 @@ where } impl<'a, Message, Renderer> From> - for Element<'a, Message, Renderer> + for Element<'a, Message, Theme, Renderer> where Renderer: 'a + core::Renderer, Message: 'a, { fn from( wrap: Wrap<'a, Message, direction::Vertical, Renderer>, - ) -> Element<'a, Message, Renderer> { + ) -> Element<'a, Message, Theme, Renderer> { Element::new(wrap) } } impl<'a, Message, Renderer> From> - for Element<'a, Message, Renderer> + for Element<'a, Message, Theme, Renderer> where Renderer: 'a + core::Renderer, Message: 'a, { fn from( wrap: Wrap<'a, Message, direction::Horizontal, Renderer>, - ) -> Element<'a, Message, Renderer> { + ) -> Element<'a, Message, Theme, Renderer> { Element::new(wrap) } } @@ -355,13 +359,14 @@ where #[allow(clippy::cast_precision_loss)] // TODO: possible precision loss let line_minimal_length = self.line_minimal_length; let limits = limits - .pad(padding) + .shrink(padding) .width(self.width) .height(self.height) .max_width(self.max_width) .max_height(self.max_height); let max_width = limits.max().width; + let mut children = tree.children.iter_mut(); let mut curse = padding.left; let mut deep_curse = padding.left; let mut current_line_height = line_minimal_length; @@ -372,13 +377,16 @@ where let mut nodes: Vec = self .elements .iter() - .zip(tree.children.iter_mut()) - .map(|(elem, tree)| { + .map(|elem| { let node_limit = Limits::new( Size::new(limits.min().width, line_minimal_length), limits.max(), ); - let mut node = elem.as_widget().layout(tree, renderer, &node_limit); + let mut node = elem.as_widget().layout( + children.next().expect("wrap missing expected child"), + renderer, + &node_limit, + ); let size = node.size(); @@ -391,10 +399,10 @@ where start = end; end += 1; current_line_height = line_minimal_length; - node.move_to(Point::new(padding.left, deep_curse)); + node.move_to_mut(Point::new(padding.left, deep_curse)); curse = offset_init + padding.left; } else { - node.move_to(Point::new(curse, deep_curse)); + node.move_to_mut(Point::new(curse, deep_curse)); curse = offset; end += 1; } @@ -411,16 +419,16 @@ where nodes[range].iter_mut().for_each(|node| { let size = node.size(); let space = Size::new(size.width, max_length); - node.align(Alignment::Start, self.alignment, space); + node.align_mut(Alignment::Start, self.alignment, space); }); } let (width, height) = ( max_main - padding.left, deep_curse - padding.left + current_line_height, ); - let size = limits.resolve(Size::new(width, height)); + let size = limits.resolve(self.width, self.height, Size::new(width, height)); - Node::with_children(size.pad(padding), nodes) + Node::with_children(size.expand(padding), nodes) } } @@ -438,13 +446,14 @@ where #[allow(clippy::cast_precision_loss)] // TODO: possible precision loss let line_minimal_length = self.line_minimal_length; let limits = limits - .pad(padding) + .shrink(padding) .width(self.width) .height(self.height) .max_width(self.max_width) .max_height(self.max_height); let max_height = limits.max().height; + let mut children = tree.children.iter_mut(); let mut curse = padding.left; let mut wide_curse = padding.left; let mut current_line_width = line_minimal_length; @@ -460,7 +469,11 @@ where Size::new(line_minimal_length, limits.min().height), limits.max(), ); - let mut node = elem.as_widget().layout(tree, renderer, &node_limit); + let mut node = elem.as_widget().layout( + children.next().expect("wrap missing expected child"), + renderer, + &node_limit, + ); let size = node.size(); @@ -473,10 +486,10 @@ where start = end; end += 1; current_line_width = line_minimal_length; - node.move_to(Point::new(wide_curse, padding.left)); + node = node.move_to(Point::new(wide_curse, padding.left)); curse = offset_init + padding.left; } else { - node.move_to(Point::new(wide_curse, curse)); + node = node.move_to(Point::new(wide_curse, curse)); end += 1; curse = offset; } @@ -494,7 +507,7 @@ where nodes[range].iter_mut().for_each(|node| { let size = node.size(); let space = Size::new(max_length, size.height); - node.align(self.alignment, Alignment::Start, space); + node.align_mut(self.alignment, Alignment::Start, space); }); } @@ -502,9 +515,9 @@ where wide_curse - padding.left + current_line_width, max_main - padding.left, ); - let size = limits.resolve(Size::new(width, height)); + let size = limits.resolve(self.width, self.height, Size::new(width, height)); - Node::with_children(size.pad(padding), nodes) + Node::with_children(size.expand(padding), nodes) } } diff --git a/wgpu-jumpstart/Cargo.toml b/wgpu-jumpstart/Cargo.toml index e4a642d0..dba51aa3 100644 --- a/wgpu-jumpstart/Cargo.toml +++ b/wgpu-jumpstart/Cargo.toml @@ -7,4 +7,4 @@ edition = "2021" wgpu = { workspace = true } log = { workspace = true } bytemuck = { workspace = true } -raw-window-handle = "0.5.0" +raw-window-handle = "0.6.0" diff --git a/wgpu-jumpstart/src/gpu.rs b/wgpu-jumpstart/src/gpu.rs index 3b3b9536..22f08fa2 100644 --- a/wgpu-jumpstart/src/gpu.rs +++ b/wgpu-jumpstart/src/gpu.rs @@ -1,4 +1,4 @@ -use raw_window_handle::{HasRawDisplayHandle, HasRawWindowHandle}; +use raw_window_handle::{HasDisplayHandle, HasWindowHandle}; use super::color::Color; use super::GpuInitError; @@ -17,13 +17,15 @@ pub struct Gpu { } impl Gpu { - pub async fn for_window( + pub async fn for_window( instance: &wgpu::Instance, window: &H, width: u32, height: u32, ) -> Result<(Self, Surface), GpuInitError> { - let surface = unsafe { instance.create_surface(window) }?; + let surface = unsafe { + instance.create_surface_unsafe(wgpu::SurfaceTargetUnsafe::from_window(window).unwrap()) + }?; let gpu = Self::new(instance, Some(&surface)).await?; let surface = Surface::new(&gpu.device, surface, gpu.texture_format, width, height); @@ -32,7 +34,7 @@ impl Gpu { pub async fn new( instance: &wgpu::Instance, - compatible_surface: Option<&wgpu::Surface>, + compatible_surface: Option<&wgpu::Surface<'static>>, ) -> Result { let power_preference = wgpu::util::power_preference_from_env() .unwrap_or(wgpu::PowerPreference::HighPerformance); @@ -49,8 +51,8 @@ impl Gpu { let (device, queue) = adapter .request_device( &wgpu::DeviceDescriptor { - features: wgpu::Features::empty(), - limits: wgpu::Limits { + required_features: wgpu::Features::empty(), + required_limits: wgpu::Limits { max_compute_workgroup_storage_size: 0, max_compute_invocations_per_workgroup: 0, max_compute_workgroup_size_x: 0, @@ -126,14 +128,14 @@ impl Gpu { } pub struct Surface { - surface: wgpu::Surface, + surface: wgpu::Surface<'static>, surface_configuration: wgpu::SurfaceConfiguration, } impl Surface { pub fn new( device: &wgpu::Device, - surface: wgpu::Surface, + surface: wgpu::Surface<'static>, texture_format: wgpu::TextureFormat, width: u32, height: u32, @@ -146,6 +148,7 @@ impl Surface { height, present_mode: wgpu::PresentMode::Fifo, alpha_mode: wgpu::CompositeAlphaMode::Auto, + desired_maximum_frame_latency: 2, }; surface.configure(device, &surface_configuration);