diff options
author | Jan-Michael Brummer <jan.brummer@tabos.org> | 2023-01-26 16:11:41 +0100 |
---|---|---|
committer | Jan-Michael Brummer <jan.brummer@tabos.org> | 2023-03-27 16:31:58 +0200 |
commit | d96426ff1f6f676587a8f05e29c84057f7996f58 (patch) | |
tree | 79b244f4f89f65548e36bcb7b9c3a581fb8cab35 | |
parent | 14227ab516d4e7226b007fc6d9f5e80e9297c890 (diff) | |
download | libproxy-git-d96426ff1f6f676587a8f05e29c84057f7996f58.tar.gz |
Add network monitor support (#18)
-rw-r--r-- | src/backend/px-manager.c | 18 |
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 |