Add scheduler for async in wayland thread

This commit is contained in:
Ian Douglas Scott 2024-01-25 17:06:28 -08:00
parent 7ae2dc9e06
commit 01a64b11fa
3 changed files with 310 additions and 126 deletions

372
Cargo.lock generated
View file

@ -45,17 +45,6 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "ahash"
version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd"
dependencies = [
"getrandom",
"once_cell",
"version_check",
]
[[package]]
name = "ahash"
version = "0.8.7"
@ -409,6 +398,18 @@ dependencies = [
"syn 2.0.48",
]
[[package]]
name = "atk-sys"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "atomic-waker"
version = "1.1.2"
@ -554,9 +555,9 @@ checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "bytemuck"
version = "1.14.0"
version = "1.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9"
dependencies = [
"bytemuck_derive",
]
@ -584,12 +585,23 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
[[package]]
name = "cairo-sys-rs"
version = "0.18.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
dependencies = [
"libc",
"system-deps",
]
[[package]]
name = "calloop"
version = "0.12.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
dependencies = [
"async-task",
"bitflags 2.4.2",
"log",
"polling 3.3.2",
@ -619,6 +631,16 @@ dependencies = [
"libc",
]
[[package]]
name = "cfg-expr"
version = "0.15.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6100bc57b6209840798d95cb2775684849d332f7bd788db2a8c8caf7ef82a41a"
dependencies = [
"smallvec",
"target-lexicon",
]
[[package]]
name = "cfg-if"
version = "1.0.0"
@ -738,6 +760,26 @@ dependencies = [
"crossbeam-utils",
]
[[package]]
name = "const-random"
version = "0.1.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a"
dependencies = [
"const-random-macro",
]
[[package]]
name = "const-random-macro"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
dependencies = [
"getrandom",
"once_cell",
"tiny-keccak",
]
[[package]]
name = "core-foundation"
version = "0.9.4"
@ -791,7 +833,7 @@ dependencies = [
[[package]]
name = "cosmic-comp-config"
version = "0.1.0"
source = "git+https://github.com/pop-os/cosmic-comp#f7b062aa81aacf76cf4dd90154a88df8462e4337"
source = "git+https://github.com/pop-os/cosmic-comp#b46b92611c937ce77062a6496c4018c4d0cfc15f"
dependencies = [
"cosmic-config",
"input",
@ -801,22 +843,24 @@ dependencies = [
[[package]]
name = "cosmic-config"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"atomicwrites",
"cosmic-config-derive",
"dirs 5.0.1",
"iced_futures",
"known-folders",
"notify",
"once_cell",
"ron",
"serde",
"xdg",
]
[[package]]
name = "cosmic-config-derive"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"quote",
"syn 1.0.109",
@ -838,7 +882,7 @@ dependencies = [
[[package]]
name = "cosmic-text"
version = "0.10.0"
source = "git+https://github.com/pop-os/cosmic-text.git#db1530c4ec14bcbb290f9c971d8a6197c90e189a"
source = "git+https://github.com/pop-os/cosmic-text.git#e0ae465f918cd1cffca3a8239547dcf8166d3f77"
dependencies = [
"bitflags 2.4.2",
"fontdb",
@ -860,7 +904,7 @@ dependencies = [
[[package]]
name = "cosmic-theme"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"almost",
"cosmic-config",
@ -891,7 +935,7 @@ dependencies = [
"itertools 0.12.0",
"libcosmic",
"log",
"memmap2 0.9.3",
"memmap2 0.9.4",
"once_cell",
"rust-embed",
"tokio",
@ -1052,7 +1096,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
dependencies = [
"cfg-if",
"hashbrown 0.14.3",
"hashbrown",
"lock_api",
"once_cell",
"parking_lot_core 0.9.9",
@ -1117,15 +1161,6 @@ dependencies = [
"dirs-sys 0.3.7",
]
[[package]]
name = "dirs"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
dependencies = [
"dirs-sys 0.3.7",
]
[[package]]
name = "dirs"
version = "5.0.1"
@ -1158,6 +1193,12 @@ dependencies = [
"windows-sys 0.48.0",
]
[[package]]
name = "dispatch"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
[[package]]
name = "displaydoc"
version = "0.2.4"
@ -1180,9 +1221,12 @@ dependencies = [
[[package]]
name = "dlv-list"
version = "0.3.0"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257"
checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
dependencies = [
"const-random",
]
[[package]]
name = "downcast-rs"
@ -1561,11 +1605,11 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[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 0.18.1",
"roxmltree",
]
[[package]]
@ -1576,7 +1620,7 @@ checksum = "98b88c54a38407f7352dd2c4238830115a6377741098ffd1f997c813d0e088a6"
dependencies = [
"fontconfig-parser",
"log",
"memmap2 0.9.3",
"memmap2 0.9.4",
"slotmap",
"tinyvec",
"ttf-parser",
@ -1643,11 +1687,11 @@ dependencies = [
[[package]]
name = "freedesktop-icons"
version = "0.2.4"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9d46a9ae065c46efb83854bb10315de6d333bb6f4526ebe320c004dab7857e"
checksum = "b5339cbd60b2ff6b95ef212ab96bc80bf1a9dff2821b9966c417cdfae2808796"
dependencies = [
"dirs 4.0.0",
"dirs 5.0.1",
"once_cell",
"rust-ini",
"thiserror",
@ -1805,6 +1849,36 @@ dependencies = [
"libc",
]
[[package]]
name = "gdk-pixbuf-sys"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
dependencies = [
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "gdk-sys"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2"
dependencies = [
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"pango-sys",
"pkg-config",
"system-deps",
]
[[package]]
name = "generic-array"
version = "0.14.7"
@ -1874,6 +1948,19 @@ version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
[[package]]
name = "gio-sys"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
"winapi",
]
[[package]]
name = "gl_generator"
version = "0.14.0"
@ -1891,6 +1978,16 @@ version = "0.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5418c17512bdf42730f9032c74e1ae39afc408745ebb2acf72fbc4691c17945"
[[package]]
name = "glib-sys"
version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
dependencies = [
"libc",
"system-deps",
]
[[package]]
name = "glow"
version = "0.13.1"
@ -1923,6 +2020,17 @@ dependencies = [
"wgpu",
]
[[package]]
name = "gobject-sys"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
dependencies = [
"glib-sys",
"libc",
"system-deps",
]
[[package]]
name = "gpu-alloc"
version = "0.6.0"
@ -1964,7 +2072,7 @@ checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c"
dependencies = [
"bitflags 2.4.2",
"gpu-descriptor-types",
"hashbrown 0.14.3",
"hashbrown",
]
[[package]]
@ -1982,6 +2090,24 @@ version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1df00eed8d1f0db937f6be10e46e8072b0671accb504cf0f959c5c52c679f5b9"
[[package]]
name = "gtk-sys"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722"
dependencies = [
"atk-sys",
"cairo-sys-rs",
"gdk-pixbuf-sys",
"gdk-sys",
"gio-sys",
"glib-sys",
"gobject-sys",
"libc",
"pango-sys",
"system-deps",
]
[[package]]
name = "guillotiere"
version = "0.6.2"
@ -2002,22 +2128,13 @@ dependencies = [
"crunchy",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
dependencies = [
"ahash 0.7.7",
]
[[package]]
name = "hashbrown"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
dependencies = [
"ahash 0.8.7",
"ahash",
"allocator-api2",
]
@ -2139,7 +2256,7 @@ dependencies = [
[[package]]
name = "iced"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"iced_accessibility",
"iced_core",
@ -2154,7 +2271,7 @@ dependencies = [
[[package]]
name = "iced_accessibility"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"accesskit",
"accesskit_unix",
@ -2163,7 +2280,7 @@ dependencies = [
[[package]]
name = "iced_core"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"bitflags 1.3.2",
"iced_accessibility",
@ -2181,7 +2298,7 @@ dependencies = [
[[package]]
name = "iced_futures"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"futures",
"iced_core",
@ -2194,7 +2311,7 @@ dependencies = [
[[package]]
name = "iced_graphics"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"bitflags 1.3.2",
"bytemuck",
@ -2217,7 +2334,7 @@ dependencies = [
[[package]]
name = "iced_renderer"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"iced_graphics",
"iced_tiny_skia",
@ -2230,7 +2347,7 @@ dependencies = [
[[package]]
name = "iced_runtime"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"iced_accessibility",
"iced_core",
@ -2242,7 +2359,7 @@ dependencies = [
[[package]]
name = "iced_sctk"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"enum-repr",
"float-cmp",
@ -2266,7 +2383,7 @@ dependencies = [
[[package]]
name = "iced_style"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"iced_core",
"once_cell",
@ -2276,7 +2393,7 @@ dependencies = [
[[package]]
name = "iced_tiny_skia"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"bytemuck",
"cosmic-text",
@ -2294,7 +2411,7 @@ dependencies = [
[[package]]
name = "iced_wgpu"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"bitflags 1.3.2",
"bytemuck",
@ -2314,7 +2431,7 @@ dependencies = [
[[package]]
name = "iced_widget"
version = "0.12.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"iced_renderer",
"iced_runtime",
@ -2373,7 +2490,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
dependencies = [
"equivalent",
"hashbrown 0.14.3",
"hashbrown",
]
[[package]]
@ -2523,6 +2640,15 @@ version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
[[package]]
name = "known-folders"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4397c789f2709d23cfcb703b316e0766a8d4b17db2d47b0ab096ef6047cae1d8"
dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "kqueue"
version = "1.0.8"
@ -2573,7 +2699,7 @@ checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
[[package]]
name = "libcosmic"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#bb8be4e3d5b080f71c0672c6ae729c02118f4e97"
source = "git+https://github.com/pop-os/libcosmic#3aef16bf9ed7f0b2ffbaa46b0d60b1a663ebcbd7"
dependencies = [
"apply",
"ashpd",
@ -2595,6 +2721,7 @@ dependencies = [
"iced_widget",
"lazy_static",
"palette",
"rfd",
"ron",
"serde",
"slotmap",
@ -2707,7 +2834,7 @@ version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2994eeba8ed550fd9b47a0b38f0242bc3344e496483c6180b69139cc2fa5d1d7"
dependencies = [
"hashbrown 0.14.3",
"hashbrown",
]
[[package]]
@ -2797,9 +2924,9 @@ 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",
]
@ -3106,12 +3233,12 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "ordered-multimap"
version = "0.4.3"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a"
checksum = "a4d6a8c22fc714f0c2373e6091bf6f5e9b37b1bc0b1184874b7e0a4e303d318f"
dependencies = [
"dlv-list",
"hashbrown 0.12.3",
"hashbrown",
]
[[package]]
@ -3172,6 +3299,18 @@ dependencies = [
"syn 2.0.48",
]
[[package]]
name = "pango-sys"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
dependencies = [
"glib-sys",
"gobject-sys",
"libc",
"system-deps",
]
[[package]]
name = "parking"
version = "2.2.0"
@ -3288,18 +3427,18 @@ checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
[[package]]
name = "pin-project"
version = "1.1.3"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.3"
version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690"
dependencies = [
"proc-macro2",
"quote",
@ -3592,9 +3731,9 @@ dependencies = [
[[package]]
name = "regex-automata"
version = "0.4.4"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a"
checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
dependencies = [
"aho-corasick",
"memchr",
@ -3630,6 +3769,30 @@ dependencies = [
"usvg",
]
[[package]]
name = "rfd"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0d8ab342bcc5436e04d3a4c1e09e17d74958bfaddf8d5fad6f85607df0f994f"
dependencies = [
"ashpd",
"block",
"dispatch",
"glib-sys",
"gobject-sys",
"gtk-sys",
"js-sys",
"log",
"objc",
"objc-foundation",
"objc_id",
"raw-window-handle",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"windows-sys 0.48.0",
]
[[package]]
name = "rgb"
version = "0.8.37"
@ -3651,15 +3814,6 @@ dependencies = [
"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 = "roxmltree"
version = "0.19.0"
@ -3702,9 +3856,9 @@ dependencies = [
[[package]]
name = "rust-ini"
version = "0.18.0"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df"
checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a"
dependencies = [
"cfg-if",
"ordered-multimap",
@ -3948,7 +4102,7 @@ dependencies = [
"cursor-icon",
"libc",
"log",
"memmap2 0.9.3",
"memmap2 0.9.4",
"pkg-config",
"rustix 0.38.30",
"thiserror",
@ -4008,7 +4162,7 @@ dependencies = [
"foreign-types",
"js-sys",
"log",
"memmap2 0.9.3",
"memmap2 0.9.4",
"objc",
"raw-window-handle",
"redox_syscall 0.4.1",
@ -4120,6 +4274,19 @@ dependencies = [
"libc",
]
[[package]]
name = "system-deps"
version = "6.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a2d580ff6a20c55dfb86be5f9c238f67835d0e81cbdea8bf5680e0897320331"
dependencies = [
"cfg-expr",
"heck",
"pkg-config",
"toml 0.8.8",
"version-compare",
]
[[package]]
name = "taffy"
version = "0.3.11"
@ -4131,6 +4298,12 @@ dependencies = [
"slotmap",
]
[[package]]
name = "target-lexicon"
version = "0.12.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
[[package]]
name = "temp-dir"
version = "0.1.12"
@ -4190,6 +4363,15 @@ dependencies = [
"weezl",
]
[[package]]
name = "tiny-keccak"
version = "2.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
dependencies = [
"crunchy",
]
[[package]]
name = "tiny-skia"
version = "0.11.3"
@ -4530,7 +4712,7 @@ dependencies = [
"imagesize",
"kurbo",
"log",
"roxmltree 0.19.0",
"roxmltree",
"simplecss",
"siphasher",
"svgtypes",
@ -4571,6 +4753,12 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "version-compare"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
[[package]]
name = "version_check"
version = "0.9.4"
@ -5325,12 +5513,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 = "xmlwriter"
version = "0.1.0"

View file

@ -5,7 +5,7 @@ edition = "2021"
[dependencies]
anyhow = "1.0.75"
calloop = "0.12.3"
calloop = { version = "0.12.3", features = ["executor"] }
clap = { version = "4", features = ["derive"] }
cosmic-comp-config = { git = "https://github.com/pop-os/cosmic-comp" }
env_logger = "0.11.0"

View file

@ -112,6 +112,7 @@ pub struct AppData {
captures: RefCell<HashMap<CaptureSource, Arc<Capture>>>,
dmabuf_feedback: Option<DmabufFeedback>,
gbm: Option<(PathBuf, gbm::Device<fs::File>)>,
scheduler: calloop::futures::Scheduler<()>,
}
impl AppData {
@ -235,37 +236,37 @@ fn start(conn: Connection) -> mpsc::Receiver<Event> {
let dmabuf_state = DmabufState::new(&globals, &qh);
dmabuf_state.get_default_feedback(&qh).unwrap();
let registry_state = RegistryState::new(&globals);
let mut app_data = AppData {
conn: conn.clone(),
qh: qh.clone(),
dmabuf_state,
workspace_state: WorkspaceState::new(&registry_state, &qh), // Create before toplevel info state
toplevel_info_state: ToplevelInfoState::new(&registry_state, &qh),
toplevel_manager_state: ToplevelManagerState::new(&registry_state, &qh),
screencopy_state: ScreencopyState::new(&globals, &qh),
registry_state,
seat_state: SeatState::new(&globals, &qh),
shm_state: Shm::bind(&globals, &qh).unwrap(),
sender,
seats: Vec::new(),
capture_filter: CaptureFilter::default(),
captures: RefCell::new(HashMap::new()),
dmabuf_feedback: None,
gbm: None,
};
app_data.send_event(Event::Seats(app_data.seat_state.seats().collect()));
app_data.send_event(Event::ToplevelManager(
app_data.toplevel_manager_state.manager.clone(),
));
if let Ok(manager) = app_data.workspace_state.workspace_manager().get() {
app_data.send_event(Event::WorkspaceManager(manager.clone()));
}
// XXX also monitor cmd sender? Use calloop?
thread::spawn(move || {
//event_queue.blocking_dispatch(&mut app_data).unwrap();
let (executor, scheduler) = calloop::futures::executor().unwrap();
let registry_state = RegistryState::new(&globals);
let mut app_data = AppData {
conn: conn.clone(),
qh: qh.clone(),
dmabuf_state,
workspace_state: WorkspaceState::new(&registry_state, &qh), // Create before toplevel info state
toplevel_info_state: ToplevelInfoState::new(&registry_state, &qh),
toplevel_manager_state: ToplevelManagerState::new(&registry_state, &qh),
screencopy_state: ScreencopyState::new(&globals, &qh),
registry_state,
seat_state: SeatState::new(&globals, &qh),
shm_state: Shm::bind(&globals, &qh).unwrap(),
sender,
seats: Vec::new(),
capture_filter: CaptureFilter::default(),
captures: RefCell::new(HashMap::new()),
dmabuf_feedback: None,
gbm: None,
scheduler,
};
app_data.send_event(Event::Seats(app_data.seat_state.seats().collect()));
app_data.send_event(Event::ToplevelManager(
app_data.toplevel_manager_state.manager.clone(),
));
if let Ok(manager) = app_data.workspace_state.workspace_manager().get() {
app_data.send_event(Event::WorkspaceManager(manager.clone()));
}
let (cmd_sender, cmd_channel) = calloop::channel::channel();
app_data.send_event(Event::CmdSender(cmd_sender));
@ -282,6 +283,7 @@ fn start(conn: Connection) -> mpsc::Receiver<Event> {
}
})
.unwrap();
event_loop.handle().insert_source(executor, |(), _, _| {});
loop {
event_loop.dispatch(None, &mut app_data).unwrap();