Run composite manager
This commit is contained in:
parent
c48f93482a
commit
4ff865f9eb
2 changed files with 28 additions and 0 deletions
18
src/main.rs
18
src/main.rs
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
10
src/task.rs
10
src/task.rs
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue