[gnome-system-monitor] Disks tab improvements (bgo #704838)
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-system-monitor] Disks tab improvements (bgo #704838)
- Date: Thu, 25 Jul 2013 00:28:56 +0000 (UTC)
commit 3018f5a1ff3da1615cef0f8117901e74cfd31f2b
Author: Stefano Facchini <stefano facchini gmail com>
Date: Thu Jul 25 03:28:26 2013 +0300
Disks tab improvements (bgo #704838)
src/disks.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++---
src/disks.h | 10 ++++----
src/interface.cpp | 14 ++----------
src/procman-app.cpp | 32 +---------------------------
4 files changed, 61 insertions(+), 50 deletions(-)
---
diff --git a/src/disks.cpp b/src/disks.cpp
index 6d2e795..58cb393 100644
--- a/src/disks.cpp
+++ b/src/disks.cpp
@@ -213,12 +213,24 @@ add_disk(GtkListStore *list, const glibtop_mountentry *entry, bool show_all_fs)
-1);
}
+static void
+mount_changed (GVolumeMonitor *monitor, GMount *mount, ProcmanApp *app)
+{
+ disks_update(app);
+}
+static gboolean
+cb_timeout (gpointer data)
+{
+ ProcmanApp *app = (ProcmanApp *) data;
+ disks_update (app);
+
+ return G_SOURCE_CONTINUE;
+}
-int
-cb_update_disks(gpointer data)
+void
+disks_update(ProcmanApp *app)
{
- ProcmanApp *app = static_cast<ProcmanApp *>(data);
GtkListStore *list;
glibtop_mountentry * entries;
glibtop_mountlist mountlist;
@@ -234,10 +246,44 @@ cb_update_disks(gpointer data)
add_disk(list, &entries[i], app->config.show_all_fs);
g_free(entries);
+}
+
+static void
+init_volume_monitor (ProcmanApp *app)
+{
+ GVolumeMonitor *monitor = g_volume_monitor_get ();
- return TRUE;
+ g_signal_connect (monitor, "mount-added", G_CALLBACK (mount_changed), app);
+ g_signal_connect (monitor, "mount-changed", G_CALLBACK (mount_changed), app);
+ g_signal_connect (monitor, "mount-removed", G_CALLBACK (mount_changed), app);
}
+void
+disks_freeze (ProcmanApp *app)
+{
+ if (app->disk_timeout) {
+ g_source_remove (app->disk_timeout);
+ app->disk_timeout = 0;
+ }
+}
+
+void
+disks_thaw (ProcmanApp *app)
+{
+ if (app->disk_timeout)
+ return;
+
+ app->disk_timeout = g_timeout_add (app->config.disks_update_interval,
+ cb_timeout,
+ app);
+}
+
+void
+disks_reset_timeout (ProcmanApp *app)
+{
+ disks_freeze (app);
+ disks_thaw (app);
+}
static void
cb_disk_columns_changed(GtkTreeView *treeview, gpointer data)
@@ -299,6 +345,7 @@ create_disk_view(ProcmanApp *app, GtkBuilder *builder)
GtkCellRenderer *cell;
guint i;
+ init_volume_monitor (app);
const gchar * const titles[] = {
N_("Device"),
N_("Directory"),
diff --git a/src/disks.h b/src/disks.h
index d3acf47..3c4ab26 100644
--- a/src/disks.h
+++ b/src/disks.h
@@ -3,10 +3,10 @@
#include "procman-app.h"
-void
-create_disk_view(ProcmanApp *app, GtkBuilder *builder);
-
-int
-cb_update_disks(gpointer procdata);
+void create_disk_view(ProcmanApp *app, GtkBuilder *builder);
+void disks_update (ProcmanApp *app);
+void disks_freeze (ProcmanApp *app);
+void disks_thaw (ProcmanApp *app);
+void disks_reset_timeout (ProcmanApp *app);
#endif /* H_GNOME_SYSTEM_MONITOR_DISKLIST_1123719137 */
diff --git a/src/interface.cpp b/src/interface.cpp
index c9945e1..51322cf 100644
--- a/src/interface.cpp
+++ b/src/interface.cpp
@@ -502,18 +502,10 @@ update_page_activities (ProcmanApp *app)
}
if (current_page == PROCMAN_TAB_DISKS) {
- cb_update_disks (app);
-
- if (!app->disk_timeout) {
- app->disk_timeout = g_timeout_add (app->config.disks_update_interval,
- cb_update_disks,
- app);
- }
+ disks_update (app);
+ disks_thaw (app);
} else {
- if (app->disk_timeout) {
- g_source_remove (app->disk_timeout);
- app->disk_timeout = 0;
- }
+ disks_freeze (app);
}
}
diff --git a/src/procman-app.cpp b/src/procman-app.cpp
index 5a17fa1..02b971b 100644
--- a/src/procman-app.cpp
+++ b/src/procman-app.cpp
@@ -18,26 +18,6 @@
#include "disks.h"
static void
-mount_changed(const Glib::RefPtr<Gio::Mount>&, ProcmanApp *app)
-{
- cb_update_disks(app);
-}
-
-
-static void
-init_volume_monitor(ProcmanApp *app)
-{
- using namespace Gio;
- using namespace Glib;
-
- RefPtr<VolumeMonitor> monitor = VolumeMonitor::get();
-
- monitor->signal_mount_added().connect(sigc::bind<ProcmanApp *>(sigc::ptr_fun(&mount_changed), app));
- monitor->signal_mount_changed().connect(sigc::bind<ProcmanApp *>(sigc::ptr_fun(&mount_changed), app));
- monitor->signal_mount_removed().connect(sigc::bind<ProcmanApp *>(sigc::ptr_fun(&mount_changed), app));
-}
-
-static void
cb_show_dependencies_changed (GSettings *settings, const gchar *key, gpointer data)
{
ProcmanApp *app = static_cast<ProcmanApp *>(data);
@@ -121,13 +101,7 @@ timeouts_changed_cb (GSettings *settings, const gchar *key, gpointer data)
app->config.disks_update_interval =
MAX (app->config.disks_update_interval, 1000);
- if(app->disk_timeout) {
- g_source_remove (app->disk_timeout);
- app->disk_timeout = \
- g_timeout_add (app->config.disks_update_interval,
- cb_update_disks,
- app);
- }
+ disks_reset_timeout (app);
}
else {
g_assert_not_reached();
@@ -221,7 +195,7 @@ show_all_fs_changed_cb (GSettings *settings, const gchar *key, gpointer data)
app->config.show_all_fs = g_settings_get_boolean (settings, key);
- cb_update_disks (app);
+ disks_update (app);
}
void
@@ -680,8 +654,6 @@ void ProcmanApp::on_startup()
create_main_window (this);
- init_volume_monitor (this);
-
add_accelerator ("<Alt>1", "win.show-page", g_variant_new_int32 (PROCMAN_TAB_PROCESSES));
add_accelerator ("<Alt>2", "win.show-page", g_variant_new_int32 (PROCMAN_TAB_RESOURCES));
add_accelerator ("<Alt>3", "win.show-page", g_variant_new_int32 (PROCMAN_TAB_DISKS));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]