Run composite manager

This commit is contained in:
Alex Kotov 2021-12-05 21:09:52 +05:00
parent c48f93482a
commit 4ff865f9eb
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08
2 changed files with 28 additions and 0 deletions

View file

@ -4,13 +4,21 @@ use crate::task::*;
fn main() {
let wm_task = WMTask::start(TaskConfig::new("polytreewm")).unwrap();
let comp_task = CompTask::start(TaskConfig::new("picom")).unwrap();
let wm_task_result = wm_task.wait();
comp_task.terminate();
unsafe { libc::exit(wm_task_result.status()) }
}
#[derive(Debug)]
struct WMTask(TaskInfo);
#[derive(Debug)]
struct CompTask(TaskInfo);
impl Task for WMTask {
fn new(info: TaskInfo) -> Self {
Self(info)
@ -20,3 +28,13 @@ impl Task for WMTask {
&self.0
}
}
impl Task for CompTask {
fn new(info: TaskInfo) -> Self {
Self(info)
}
fn info(&self) -> &TaskInfo {
&self.0
}
}

View file

@ -89,4 +89,14 @@ pub trait Task: Debug + Sized {
TaskResult::new(self.info().clone(), status)
}
}
fn terminate(self) -> TaskResult {
unsafe {
libc::kill(self.info().pid(), libc::SIGKILL);
let status: i32 = 0;
libc::waitpid(self.info().pid(), status as *mut i32, 0);
let status = libc::WEXITSTATUS(status);
TaskResult::new(self.info().clone(), status)
}
}
}