Add a calloop futures executor

This commit is contained in:
Ivan Molodetskikh
2024-01-17 10:23:48 +04:00
parent 6703d5ce72
commit f068157f55
3 changed files with 10 additions and 0 deletions

3
Cargo.lock generated
View File

@@ -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",

View File

@@ -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"

View File

@@ -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,