aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-01-17 10:23:48 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-01-17 10:24:01 +0400
commitf068157f557d1c7256278d41f1bd42a13867777f (patch)
treeb62ee2f0a102689b402f70e77e545f8b98d3074e
parent6703d5ce7214b5308c3803183536c4fa92773b8e (diff)
downloadniri-f068157f557d1c7256278d41f1bd42a13867777f.tar.gz
niri-f068157f557d1c7256278d41f1bd42a13867777f.tar.bz2
niri-f068157f557d1c7256278d41f1bd42a13867777f.zip
Add a calloop futures executor
-rw-r--r--Cargo.lock3
-rw-r--r--Cargo.toml1
-rw-r--r--src/niri.rs6
3 files changed, 10 insertions, 0 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 2290c2d1..9babdeab 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -474,7 +474,9 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b50b5a44d59a98c55a9eeb518f39bf7499ba19fd98ee7d22618687f3f10adbf"
dependencies = [
+ "async-task",
"bitflags 2.4.1",
+ "futures-io",
"log",
"polling 3.3.1",
"rustix 0.38.28",
@@ -1700,6 +1702,7 @@ dependencies = [
"async-channel",
"async-io 1.13.0",
"bitflags 2.4.1",
+ "calloop",
"clap",
"directories",
"git-version",
diff --git a/Cargo.toml b/Cargo.toml
index 9b96bdf6..25c106a6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -39,6 +39,7 @@ arrayvec = "0.7.4"
async-channel = { version = "2.1.1", optional = true }
async-io = { version = "1.13.0", optional = true }
bitflags = "2.4.1"
+calloop = { version = "0.12.3", features = ["executor", "futures-io"] }
clap = { version = "4.4.13", features = ["derive"] }
directories = "5.0.1"
git-version = "0.3.9"
diff --git a/src/niri.rs b/src/niri.rs
index 082a68eb..f22612ed 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -10,6 +10,7 @@ use std::{env, mem, thread};
use _server_decoration::server::org_kde_kwin_server_decoration_manager::Mode as KdeDecorationsMode;
use anyhow::Context;
+use calloop::futures::Scheduler;
use niri_config::{Config, TrackLayout};
use smithay::backend::allocator::Fourcc;
use smithay::backend::renderer::element::solid::{SolidColorBuffer, SolidColorRenderElement};
@@ -112,6 +113,7 @@ pub struct Niri {
pub config: Rc<RefCell<Config>>,
pub event_loop: LoopHandle<'static, State>,
+ pub scheduler: Scheduler<()>,
pub stop_signal: LoopSignal,
pub display_handle: DisplayHandle,
pub socket_name: OsString,
@@ -742,6 +744,9 @@ impl Niri {
) -> Self {
let _span = tracy_client::span!("Niri::new");
+ let (executor, scheduler) = calloop::futures::executor().unwrap();
+ event_loop.insert_source(executor, |_, _, _| ()).unwrap();
+
let display_handle = display.handle();
let config_ = config.borrow();
@@ -884,6 +889,7 @@ impl Niri {
config,
event_loop,
+ scheduler,
stop_signal,
socket_name,
display_handle,