From bca32158af575c7106118be2161965b89bf82ce0 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Fri, 27 Mar 2026 13:43:42 +0100 Subject: [PATCH] Execute the update thread inside the ProcessManager instead of the ProcessView --- src/MainWindow.vala | 9 ++++----- src/Managers/ProcessManager.vala | 18 +++++++++++++++--- src/Views/ProcessView/ProcessView.vala | 15 ++------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 7e46cf7e..68e6a828 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -91,10 +91,10 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { search_revealer.reveal_child = stack.visible_child == process_view; }); - new Thread ("upd", () => { - Timeout.add_seconds (MonitorApp.settings.get_int ("update-time"), () => { - process_view.update (); + var process_manager = ProcessManager.get_default (); + Timeout.add_seconds (MonitorApp.settings.get_int ("update-time"), () => { + process_manager.update (); Idle.add (() => { system_view.update (); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); @@ -103,8 +103,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { dbusserver.update (res); return false; }); - return true; - }); + return true; }); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); diff --git a/src/Managers/ProcessManager.vala b/src/Managers/ProcessManager.vala index 69033027..f86cc66f 100644 --- a/src/Managers/ProcessManager.vala +++ b/src/Managers/ProcessManager.vala @@ -4,7 +4,7 @@ */ namespace Monitor { - public class ProcessManager { + public class ProcessManager : GLib.Object { private static GLib.Once instance; public static unowned ProcessManager get_default () { return instance.once (() => { return new ProcessManager (); }); @@ -33,7 +33,7 @@ namespace Monitor { apps_info_list = new Gee.HashMap (); populate_apps_info (); - update_processes.begin (); + update (); } public void populate_apps_info () { @@ -102,7 +102,7 @@ namespace Monitor { /** * Gets all new process and adds them */ - public async void update_processes () { + public void update_processes () { /* CPU */ GTop.Cpu cpu_data; GTop.get_cpu (out cpu_data); @@ -158,6 +158,18 @@ namespace Monitor { } + public void update () { + new Thread ("update-processes", () => { + Idle.add (() => { + update_processes (); + return false; + }); + return true; + }); + /* emit the updated signal so that subscribers can update */ + updated (); + } + /** Sets name and icon for a process that is a Flatpak app and its children. */ private void set_flatpak_name_icon (Process process, GLib.Icon icon, string name) { process.application_name = name; diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index 27999edf..70604deb 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -27,6 +27,8 @@ public class Monitor.ProcessView : Granite.Bin { visible = false, }; + treeview_model.process_manager.updated.connect (process_info_view.update); + var paned = new Gtk.Paned (HORIZONTAL) { start_child = process_tree_view, end_child = process_info_view, @@ -132,17 +134,4 @@ public class Monitor.ProcessView : Granite.Bin { kill_action.set_enabled (process.uid == Posix.getuid ()); } - public void update () { - new Thread ("update-processes", () => { - Idle.add (() => { - process_info_view.update (); - treeview_model.process_manager.update_processes.begin (); - - return false; - }); - return true; - }); - - } - }