From d96426ff1f6f676587a8f05e29c84057f7996f58 Mon Sep 17 00:00:00 2001 From: Jan-Michael Brummer Date: Thu, 26 Jan 2023 16:11:41 +0100 Subject: Add network monitor support (#18) --- src/backend/px-manager.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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; @@ -64,6 +65,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) { @@ -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 -- cgit v1.2.1