summaryrefslogtreecommitdiff
path: root/src/settings/nm-settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings/nm-settings.c')
-rw-r--r--src/settings/nm-settings.c20
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);