From 61b28a4bb4f7ba0272d9e2550ccc63bb0cbe5a32 Mon Sep 17 00:00:00 2001 From: Jos van den Oever Date: Mon, 28 Aug 2017 21:38:57 +0200 Subject: [PATCH] Send process updates in the demo --- demo/rust/src/interface.rs | 2 +- demo/rust/src/processes_implementation.rs | 30 +++++++++++++++++++++++ demo/rust/src/processes_interface.rs | 2 +- src/rust.cpp | 2 +- tests/rust_tree/src/interface.rs | 2 +- 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/demo/rust/src/interface.rs b/demo/rust/src/interface.rs index 9ea8fa1..b597218 100644 --- a/demo/rust/src/interface.rs +++ b/demo/rust/src/interface.rs @@ -138,7 +138,7 @@ pub struct TreeUniformTree { } impl TreeUniformTree { - pub fn data_changed(&self, item: Option, 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) { diff --git a/demo/rust/src/processes_implementation.rs b/demo/rust/src/processes_implementation.rs index fe06165..a8aaee7 100644 --- a/demo/rust/src/processes_implementation.rs +++ b/demo/rust/src/processes_implementation.rs @@ -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, bmap: &mut HashMap) { @@ -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; diff --git a/demo/rust/src/processes_interface.rs b/demo/rust/src/processes_interface.rs index 9337dea..7b674cb 100644 --- a/demo/rust/src/processes_interface.rs +++ b/demo/rust/src/processes_interface.rs @@ -108,7 +108,7 @@ pub struct ProcessesUniformTree { } impl ProcessesUniformTree { - pub fn data_changed(&self, item: Option, 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) { diff --git a/src/rust.cpp b/src/rust.cpp index 44ef1c8..0d12dd6 100644 --- a/src/rust.cpp +++ b/src/rust.cpp @@ -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) { diff --git a/tests/rust_tree/src/interface.rs b/tests/rust_tree/src/interface.rs index 82ca503..adf0f15 100644 --- a/tests/rust_tree/src/interface.rs +++ b/tests/rust_tree/src/interface.rs @@ -108,7 +108,7 @@ pub struct PersonsUniformTree { } impl PersonsUniformTree { - pub fn data_changed(&self, item: Option, 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) {