diff options
Diffstat (limited to 'src/settings/nm-settings.c')
-rw-r--r-- | src/settings/nm-settings.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 9ea9f644fc..48d12427df 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -68,6 +68,7 @@ #include "nm-settings-utils.h" #include "nm-connection-provider.h" #include "nm-config.h" +#include "nm-device-manager.h" /* LINKER CRACKROCK */ #define EXPORT(sym) void * __export_##sym = &sym; @@ -123,7 +124,6 @@ G_DEFINE_TYPE_EXTENDED (NMSettings, nm_settings, G_TYPE_OBJECT, 0, typedef struct { NMDBusManager *dbus_mgr; - NMAgentManager *agent_mgr; NMConfig *config; @@ -1481,8 +1481,8 @@ default_wired_try_update (NMDefaultWiredConnection *wired, g_object_unref (wired); } -void -nm_settings_device_added (NMSettings *self, NMDevice *device) +static void +device_added (NMDeviceManager *device_mgr, NMDevice *device, NMSettings *self) { NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self); NMDefaultWiredConnection *wired; @@ -1525,8 +1525,8 @@ nm_settings_device_added (NMSettings *self, NMDevice *device) g_object_set_data (G_OBJECT (device), DEFAULT_WIRED_TAG, wired); } -void -nm_settings_device_removed (NMSettings *self, NMDevice *device) +static void +device_removed (NMDeviceManager *device_mgr, NMDevice *device, NMSettings *self) { NMDefaultWiredConnection *connection; @@ -1650,6 +1650,11 @@ nm_settings_new (GError **error) priv->config = nm_config_get (); priv->dbus_mgr = nm_dbus_manager_get (); + g_signal_connect (nm_device_manager_get (), NM_DM_SIGNAL_DEVICE_ADDED, + G_CALLBACK (device_added), self); + g_signal_connect (nm_device_manager_get (), NM_DM_SIGNAL_DEVICE_REMOVED, + G_CALLBACK (device_removed), self); + /* Load the plugins; fail if a plugin is not found. */ if (!load_plugins (self, nm_config_get_plugins (priv->config), error)) { g_object_unref (self); @@ -1701,6 +1706,11 @@ dispose (GObject *object) priv->dbus_mgr = NULL; + g_signal_handlers_disconnect_by_func (nm_device_manager_get (), + G_CALLBACK (device_added), self); + g_signal_handlers_disconnect_by_func (nm_device_manager_get (), + G_CALLBACK (device_removed), self); + g_object_unref (priv->session_monitor); g_object_unref (priv->agent_mgr); |