summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Michael Brummer <jan.brummer@tabos.org>2023-01-26 16:11:41 +0100
committerJan-Michael Brummer <jan.brummer@tabos.org>2023-03-27 16:31:58 +0200
commitd96426ff1f6f676587a8f05e29c84057f7996f58 (patch)
tree79b244f4f89f65548e36bcb7b9c3a581fb8cab35
parent14227ab516d4e7226b007fc6d9f5e80e9297c890 (diff)
downloadlibproxy-git-d96426ff1f6f676587a8f05e29c84057f7996f58.tar.gz
Add network monitor support (#18)
-rw-r--r--src/backend/px-manager.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/backend/px-manager.c b/src/backend/px-manager.c
index ca80eab..be86830 100644
--- a/src/backend/px-manager.c
+++ b/src/backend/px-manager.c
@@ -50,6 +50,7 @@ struct _PxManager {
PeasExtensionSet *config_set;
PeasExtensionSet *pacrunner_set;
PeasExtensionSet *download_set;
+ GNetworkMonitor *network_monitor;
char *plugins_dir;
GCancellable *cancellable;
@@ -65,6 +66,20 @@ G_DEFINE_TYPE (PxManager, px_manager, G_TYPE_OBJECT)
G_DEFINE_QUARK (px - manager - error - quark, px_manager_error)
static void
+px_manager_on_network_changed (GNetworkMonitor *monitor,
+ gboolean network_available,
+ gpointer user_data)
+{
+ PxManager *self = PX_MANAGER (user_data);
+
+ g_debug ("%s: Network connection changed, clearing pac data\n", __FUNCTION__);
+
+ self->wpad = FALSE;
+ g_clear_pointer (&self->pac_url, g_free);
+ g_clear_object (&self->pac_data);
+}
+
+static void
px_manager_constructed (GObject *object)
{
PxManager *self = PX_MANAGER (object);
@@ -104,6 +119,9 @@ px_manager_constructed (GObject *object)
if (!available)
peas_engine_unload_plugin (self->engine, info);
}
+
+ self->network_monitor = g_network_monitor_get_default ();
+ g_signal_connect_object (G_OBJECT (self->network_monitor), "network-changed", G_CALLBACK (px_manager_on_network_changed), self, 0);
}
static void