summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock168
-rw-r--r--Cargo.toml7
-rw-r--r--src/bar.rs13
-rw-r--r--src/cursor.rs129
-rw-r--r--src/main.rs1
-rw-r--r--src/state.rs18
6 files changed, 118 insertions, 218 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 0ff939d..09178ce 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -13,9 +13,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.68"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
+checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800"
[[package]]
name = "autocfg"
@@ -37,9 +37,9 @@ checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
[[package]]
name = "cairo-rs"
-version = "0.16.7"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3125b15ec28b84c238f6f476c6034016a5f6cc0221cb514ca46c532139fc97d"
+checksum = "a8af54f5d48af1226928adc1f57edd22f5df1349e7da1fc96ae15cf43db0e871"
dependencies = [
"bitflags",
"cairo-sys-rs",
@@ -51,9 +51,9 @@ dependencies = [
[[package]]
name = "cairo-sys-rs"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c48f4af05fabdcfa9658178e1326efa061853f040ce7d72e33af6885196f421"
+checksum = "f55382a01d30e5e53f185eee269124f5e21ab526595b872751278dfbb463594e"
dependencies = [
"glib-sys",
"libc",
@@ -221,9 +221,9 @@ dependencies = [
[[package]]
name = "gio"
-version = "0.16.7"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a1c84b4534a290a29160ef5c6eff2a9c95833111472e824fc5cb78b513dd092"
+checksum = "1981edf8679d2f2c8ec3120015867f45aa0a1c2d5e3e129ca2f7dda174d3d2a9"
dependencies = [
"bitflags",
"futures-channel",
@@ -241,9 +241,9 @@ dependencies = [
[[package]]
name = "gio-sys"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9b693b8e39d042a95547fc258a7b07349b1f0b48f4b2fa3108ba3c51c0b5229"
+checksum = "b5d3076ecb86c8c3a672c9843d6232b3a344fb81d304d0ba1ac64b23343efa46"
dependencies = [
"glib-sys",
"gobject-sys",
@@ -254,9 +254,9 @@ dependencies = [
[[package]]
name = "glib"
-version = "0.16.7"
+version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddd4df61a866ed7259d6189b8bcb1464989a77f1d85d25d002279bbe9dd38b2f"
+checksum = "91b429154ec5943185aeeaf79e646297567b6a056965f1e89da2657a0e23255b"
dependencies = [
"bitflags",
"futures-channel",
@@ -269,6 +269,7 @@ dependencies = [
"glib-sys",
"gobject-sys",
"libc",
+ "memchr",
"once_cell",
"smallvec",
"thiserror",
@@ -276,9 +277,9 @@ dependencies = [
[[package]]
name = "glib-macros"
-version = "0.16.3"
+version = "0.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e084807350b01348b6d9dbabb724d1a0bb987f47a2c85de200e98e12e30733bf"
+checksum = "9bc80ac951300ca288dd9ab3863743c37a608fb0e5ca12863495640ec6b781ab"
dependencies = [
"anyhow",
"heck",
@@ -291,9 +292,9 @@ dependencies = [
[[package]]
name = "glib-sys"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61a4f46316d06bfa33a7ac22df6f0524c8be58e3db2d9ca99ccb1f357b62a65"
+checksum = "9ddcb73fa8236277bedadaaadb76aef49c85d66340f83bece244f46c2d4f0e01"
dependencies = [
"libc",
"system-deps",
@@ -301,9 +302,9 @@ dependencies = [
[[package]]
name = "gobject-sys"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3520bb9c07ae2a12c7f2fbb24d4efc11231c8146a86956413fb1a79bb760a0f1"
+checksum = "9a0155d388840c77d61b033b66ef4f9bc7f4133d83df83572d6b4fb234a3be7d"
dependencies = [
"glib-sys",
"libc",
@@ -318,18 +319,15 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "heck"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "hermit-abi"
-version = "0.2.6"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
+checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
[[package]]
name = "humantime"
@@ -351,11 +349,11 @@ dependencies = [
"serde_json",
"thiserror",
"tokio",
- "toml 0.7.1",
+ "toml 0.7.2",
"wayrs-client",
+ "wayrs-cursor",
"wayrs-protocols",
"wayrs-shm-alloc",
- "xcursor",
]
[[package]]
@@ -370,24 +368,24 @@ dependencies = [
[[package]]
name = "io-lifetimes"
-version = "1.0.4"
+version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"
+checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3"
dependencies = [
"libc",
- "windows-sys",
+ "windows-sys 0.45.0",
]
[[package]]
name = "is-terminal"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
+checksum = "22e18b0a45d56fe973d6db23972bf5bc46f988a4a2385deac9cc29572f09daef"
dependencies = [
"hermit-abi",
"io-lifetimes",
"rustix",
- "windows-sys",
+ "windows-sys 0.45.0",
]
[[package]]
@@ -425,9 +423,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "memmap2"
-version = "0.5.8"
+version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b182332558b18d807c4ce1ca8ca983b34c3ee32765e47b3f0f69b90355cc1dc"
+checksum = "2af2c65375e552a67fe3829ca63e8a7c27a378a62824594f43b2851d682b5ec2"
dependencies = [
"libc",
]
@@ -449,14 +447,14 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "mio"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de"
+checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
dependencies = [
"libc",
"log",
"wasi",
- "windows-sys",
+ "windows-sys 0.45.0",
]
[[package]]
@@ -493,15 +491,15 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.17.0"
+version = "1.17.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
+checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
[[package]]
name = "pango"
-version = "0.16.5"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdff66b271861037b89d028656184059e03b0b6ccb36003820be19f7200b1e94"
+checksum = "243c048be90312220fb3bd578176eed8290568274a93c95040289d39349384bc"
dependencies = [
"bitflags",
"gio",
@@ -513,9 +511,9 @@ dependencies = [
[[package]]
name = "pango-sys"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e134909a9a293e04d2cc31928aa95679c5e4df954d0b85483159bd20d8f047f"
+checksum = "4293d0f0b5525eb5c24734d30b0ed02cd02aa734f216883f376b54de49625de8"
dependencies = [
"glib-sys",
"gobject-sys",
@@ -525,9 +523,9 @@ dependencies = [
[[package]]
name = "pangocairo"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16ad2ec87789371b551fd2367c10aa37060412ffd3e60abd99491b21b93a3f9b"
+checksum = "2feeb7ea7874507f83f5e7ba869c54e321959431c8fbd70d4b735c8b15d90506"
dependencies = [
"bitflags",
"cairo-rs",
@@ -539,9 +537,9 @@ dependencies = [
[[package]]
name = "pangocairo-sys"
-version = "0.16.3"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "848d2df9b7f1a8c7a19d994de443bcbe5d4382610ccb8e64247f932be74fcf76"
+checksum = "71abd374a8322e2e382039ff2e020c4cc9ef2e12ea488e38d9cec4a55e296470"
dependencies = [
"cairo-sys-rs",
"glib-sys",
@@ -604,9 +602,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.50"
+version = "1.0.51"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
+checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
dependencies = [
"unicode-ident",
]
@@ -668,16 +666,16 @@ checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
[[package]]
name = "rustix"
-version = "0.36.7"
+version = "0.36.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"
+checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644"
dependencies = [
"bitflags",
"errno",
"io-lifetimes",
"libc",
"linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.45.0",
]
[[package]]
@@ -708,9 +706,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.91"
+version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"
+checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76"
dependencies = [
"itoa",
"ryu",
@@ -737,18 +735,18 @@ dependencies = [
[[package]]
name = "signal-hook-registry"
-version = "1.4.0"
+version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
dependencies = [
"libc",
]
[[package]]
name = "slab"
-version = "0.4.7"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
dependencies = [
"autocfg",
]
@@ -843,7 +841,7 @@ dependencies = [
"signal-hook-registry",
"socket2",
"tokio-macros",
- "windows-sys",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -868,14 +866,14 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "772c1426ab886e7362aedf4abc9c0d1348a979517efedfc25862944d10137af0"
+checksum = "f7afcae9e3f0fe2c370fd4657108972cbb2fa9db1b9f84849cefd80741b01cb6"
dependencies = [
"serde",
"serde_spanned",
"toml_datetime 0.6.1",
- "toml_edit 0.19.1",
+ "toml_edit 0.19.3",
]
[[package]]
@@ -906,9 +904,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.19.1"
+version = "0.19.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90a238ee2e6ede22fb95350acc78e21dc40da00bb66c0334bde83de4ed89424e"
+checksum = "5e6a7712b49e1775fb9a7b998de6635b299237f48b404dde71704f2e0e7f37e5"
dependencies = [
"indexmap",
"nom8",
@@ -960,6 +958,18 @@ dependencies = [
]
[[package]]
+name = "wayrs-cursor"
+version = "0.4.0-beta.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1879f7969f4c6ff185ba9f39fa699c803800b893468969c4c0fbf4e90170cbe"
+dependencies = [
+ "thiserror",
+ "wayrs-client",
+ "wayrs-shm-alloc",
+ "xcursor",
+]
+
+[[package]]
name = "wayrs-protocols"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -983,9 +993,9 @@ dependencies = [
[[package]]
name = "wayrs-shm-alloc"
-version = "0.3.0"
+version = "0.4.0-beta.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb9c74736663be1fc43219fab7cf694315667f4c7fb6958e1302d41dd684df64"
+checksum = "9aca921a02f92231c33b39e3dab65f727453ec00b468bc6599476fecb7468856"
dependencies = [
"memmap2",
"shmemfdrs",
@@ -1039,6 +1049,30 @@ dependencies = [
]
[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
name = "windows_aarch64_gnullvm"
version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index d7455f4..0fa51da 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -9,16 +9,15 @@ env_logger = "0.10"
anyhow = "1"
dirs-next = "2"
toml = "0.7"
-pangocairo = "0.16"
+pangocairo = "0.17"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
memchr = "2"
thiserror = "1.0.38"
wayrs-client = { version = "0.3", features = ["tokio"] }
-wayrs-shm-alloc = "0.3"
-
-xcursor = "0.3.4"
+wayrs-shm-alloc = "0.4.0-beta.0"
+wayrs-cursor = "0.4.0-beta.0"
[dependencies.wayrs-protocols]
version = "0.3"
diff --git a/src/bar.rs b/src/bar.rs
index 3f3e958..90eae29 100644
--- a/src/bar.rs
+++ b/src/bar.rs
@@ -3,6 +3,7 @@ use std::collections::BinaryHeap;
use pangocairo::cairo;
use wayrs_client::connection::Connection;
+use wayrs_shm_alloc::BufferSpec;
use crate::button_manager::ButtonManager;
use crate::color::Color;
@@ -106,10 +107,12 @@ impl Bar {
let (buffer, canvas) = ss.shm.alloc_buffer(
conn,
- pix_width as i32,
- pix_height as i32,
- pix_width as i32 * 4,
- wl_shm::Format::Argb8888,
+ BufferSpec {
+ width: pix_width,
+ height: pix_height,
+ stride: pix_width * 4,
+ format: wl_shm::Format::Argb8888,
+ },
);
let cairo_surf = unsafe {
@@ -233,7 +236,7 @@ impl Bar {
self.viewport
.set_destination(conn, self.width as i32, self.height as i32);
- self.surface.attach(conn, buffer.wl, 0, 0);
+ self.surface.attach(conn, buffer.into_wl_buffer(), 0, 0);
self.surface.damage(conn, 0, 0, i32::MAX, i32::MAX);
self.surface.commit(conn);
}
diff --git a/src/cursor.rs b/src/cursor.rs
deleted file mode 100644
index ee7509b..0000000
--- a/src/cursor.rs
+++ /dev/null
@@ -1,129 +0,0 @@
-use std::collections::HashMap;
-use std::io;
-
-use wayrs_client::connection::Connection;
-use wayrs_client::protocol::*;
-use wayrs_shm_alloc::ShmAlloc;
-
-use xcursor::parser::Image;
-
-use crate::state::State;
-
-#[derive(Debug, thiserror::Error)]
-pub enum CursorError {
- #[error("cursor '{0}' not found")]
- CursorNotFound(String),
- #[error("theme could not be parsed")]
- ThemeParseError,
- #[error(transparent)]
- ReadError(#[from] io::Error),
-}
-
-pub struct CursorTheme {
- xcursor_size: u32,
- theme: xcursor::CursorTheme,
- cursors: HashMap<String, Vec<Image>>,
-}
-
-impl CursorTheme {
- pub fn new() -> Self {
- let theme_name = std::env::var("XCURSOR_THEME").ok();
- let theme_name = theme_name.as_deref().unwrap_or("default");
-
- let xcursor_size = std::env::var("XCURSOR_SIZE")
- .ok()
- .and_then(|x| x.parse().ok())
- .unwrap_or(24);
-
- let theme = xcursor::CursorTheme::load(theme_name);
-
- CursorTheme {
- xcursor_size,
- theme,
- cursors: HashMap::new(),
- }
- }
-
- /// Use this to handle errors ahead of time.
- pub fn ensure_cursor_is_loaded(&mut self, cursor: &str) -> Result<(), CursorError> {
- let _ = self.get_images(cursor)?;
- Ok(())
- }
-
- #[allow(clippy::too_many_arguments)]
- pub fn set_cursor(
- &mut self,
- conn: &mut Connection<State>,
- cursor: &str,
- scale: u32,
- serial: u32,
- shm: &mut ShmAlloc,
- surface: WlSurface,
- pointer: WlPointer,
- ) -> Result<(), CursorError> {
- let target_size = self.xcursor_size * scale;
-
- let images = self.get_images(cursor)?;
-
- let image = match images.binary_search_by_key(&target_size, |img| img.size) {
- Ok(indx) => &images[indx],
- Err(indx) if indx == 0 => images.first().unwrap(),
- Err(indx) if indx >= images.len() => images.last().unwrap(),
- Err(indx) => {
- let a = &images[indx - 1];
- let b = &images[indx];
- if target_size - a.size < b.size - target_size {
- a
- } else {
- b
- }
- }
- };
-
- let (buffer, canvas) = shm.alloc_buffer(
- conn,
- image.width as i32,
- image.height as i32,
- (image.width * 4) as i32,
- wl_shm::Format::Argb8888,
- );
-
- assert_eq!(image.pixels_rgba.len(), canvas.len());
- canvas.copy_from_slice(&image.pixels_rgba);
-
- surface.attach(conn, buffer.wl, 0, 0);
- surface.damage(conn, 0, 0, i32::MAX, i32::MAX);
- surface.set_buffer_scale(conn, scale as i32);
- surface.commit(conn);
-
- pointer.set_cursor(
- conn,
- serial,
- surface,
- (image.xhot / scale) as i32,
- (image.yhot / scale) as i32,
- );
-
- Ok(())
- }
-
- fn get_images(&mut self, cursor: &'_ str) -> Result<&[Image], CursorError> {
- // Borrow checker does't allow `if let Some(...) = ...` here for some reason :(
- if self.cursors.get(cursor).is_some() {
- return Ok(self.cursors.get(cursor).unwrap());
- }
-
- let theme_path = self
- .theme
- .load_icon(cursor)
- .ok_or_else(|| CursorError::CursorNotFound(cursor.to_owned()))?;
-
- let raw_theme = std::fs::read(theme_path)?;
-
- let mut images =
- xcursor::parser::parse_xcursor(&raw_theme).ok_or(CursorError::ThemeParseError)?;
- images.sort_unstable_by_key(|img| img.size);
-
- Ok(self.cursors.entry(cursor.to_owned()).or_insert(images))
- }
-}
diff --git a/src/main.rs b/src/main.rs
index 2a4c4c2..241cd19 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -9,7 +9,6 @@ mod bar;
mod button_manager;
mod color;
mod config;
-mod cursor;
mod i3bar_protocol;
mod ord_adaptor;
mod pointer_btn;
diff --git a/src/state.rs b/src/state.rs
index 5a18a80..b9f11df 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -1,5 +1,4 @@
use crate::config::Position;
-use crate::cursor::CursorTheme;
use crate::protocol::*;
use crate::wm_info_provider::*;
@@ -8,7 +7,8 @@ use std::future::pending;
use wayrs_client::connection::Connection;
use wayrs_client::global::{Global, GlobalExt, Globals, GlobalsExt};
use wayrs_client::proxy::Proxy;
-use wayrs_shm_alloc::{ShmAlloc, ShmAllocState};
+use wayrs_cursor::CursorTheme;
+use wayrs_shm_alloc::ShmAlloc;
use crate::{
bar::Bar, config::Config, i3bar_protocol::Block, pointer_btn::PointerBtn,
@@ -57,9 +57,9 @@ impl State {
conn.set_callback_for(conn.registry(), wl_registry_cb);
- let shm = globals.bind(conn, 1..=1).expect("could not bind wl_shm");
+ let wl_shm = globals.bind(conn, 1..=1).expect("could not bind wl_shm");
- let mut cursor_theme = CursorTheme::new();
+ let mut cursor_theme = CursorTheme::new(None, None);
let cursor_theme_ok = cursor_theme
.ensure_cursor_is_loaded("default")
.map_err(|e| error = Err(e.into()))
@@ -75,7 +75,7 @@ impl State {
bars: Vec::new(),
shared_state: SharedState {
- shm: ShmAlloc::new(conn, shm, 1024),
+ shm: ShmAlloc::new(wl_shm),
config,
status_cmd,
blocks: Vec::new(),
@@ -258,12 +258,6 @@ impl State {
}
}
-impl ShmAllocState for State {
- fn shm_alloc(&mut self) -> &mut ShmAlloc {
- &mut self.shared_state.shm
- }
-}
-
fn wl_registry_cb(
conn: &mut Connection<State>,
state: &mut State,
@@ -455,10 +449,10 @@ fn wl_pointer_cb(
cursor_theme
.set_cursor(
conn,
+ &mut state.shared_state.shm,
"default",
bar.scale,
args.serial,
- &mut state.shared_state.shm,
seat.cursor_surface,
pointer,
)