Send process updates in the demo

master
Jos van den Oever 2017-08-28 21:38:57 +02:00
parent a7565a254c
commit 61b28a4bb4
5 changed files with 34 additions and 4 deletions

View File

@ -138,7 +138,7 @@ pub struct TreeUniformTree {
}
impl TreeUniformTree {
pub fn data_changed(&self, item: Option<usize>, first: usize, last: usize) {
pub fn data_changed(&self, first: usize, last: usize) {
(self.data_changed)(self.qobject, first, last);
}
pub fn begin_reset_model(&self) {

View File

@ -166,6 +166,34 @@ fn insert_row(model: &ProcessesUniformTree, parent: pid_t, row: usize,
model.end_insert_rows();
}
fn sync_row(model: &ProcessesUniformTree, pid: pid_t,
a: &mut Process, b: &Process) {
let mut changed = false;
if a.name != b.name {
a.name.clone_from(&b.name);
changed = true;
}
if a.cpu_usage != b.cpu_usage {
a.cpu_usage = b.cpu_usage;
changed = true;
}
if a.cmd != b.cmd {
a.cmd.clone_from(&b.cmd);
changed = true;
}
if a.exe != b.exe {
a.exe.clone_from(&b.exe);
changed = true;
}
if a.memory != b.memory {
a.memory = b.memory;
changed = true;
}
if changed {
model.data_changed(pid as usize, pid as usize);
}
}
fn sync_tree(model: &ProcessesUniformTree, parent: pid_t,
amap: &mut HashMap<pid_t, ProcessItem>,
bmap: &mut HashMap<pid_t, ProcessItem>) {
@ -186,6 +214,8 @@ fn sync_tree(model: &ProcessesUniformTree, parent: pid_t,
alen += 1;
b += 1;
} else {
sync_row(model, apid, &mut amap.get_mut(&apid).unwrap().process,
&bmap[&apid].process);
sync_tree(model, apid, amap, bmap);
a += 1;
b += 1;

View File

@ -108,7 +108,7 @@ pub struct ProcessesUniformTree {
}
impl ProcessesUniformTree {
pub fn data_changed(&self, item: Option<usize>, first: usize, last: usize) {
pub fn data_changed(&self, first: usize, last: usize) {
(self.data_changed)(self.qobject, first, last);
}
pub fn begin_reset_model(&self) {

View File

@ -197,7 +197,7 @@ pub struct %1%2 {
}
impl %1%2 {
pub fn data_changed(&self,%3 first: usize, last: usize) {
pub fn data_changed(&self, first: usize, last: usize) {
(self.data_changed)(self.qobject, first, last);
}
pub fn begin_reset_model(&self) {

View File

@ -108,7 +108,7 @@ pub struct PersonsUniformTree {
}
impl PersonsUniformTree {
pub fn data_changed(&self, item: Option<usize>, first: usize, last: usize) {
pub fn data_changed(&self, first: usize, last: usize) {
(self.data_changed)(self.qobject, first, last);
}
pub fn begin_reset_model(&self) {