diff --git a/ChangeLog b/ChangeLog index dffc54be8a..dc4ca91250 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2007-10-17 Dan Williams + + * src/nm-manager.h + src/nm-manager.c + src/nm-hal-manager.c + - (device_removed, finalize, nm_manager_remove_device, + nm_manager_sleep): add a 'deactivate' argument to + nm_manager_remove_device() to fully deactivate devices when necessary + (ie, always except when waking up) + 2007-10-16 Dan Williams * libnm-util/nm-setting.c diff --git a/src/nm-hal-manager.c b/src/nm-hal-manager.c index 0b3f5ad85d..433c703ecc 100644 --- a/src/nm-hal-manager.c +++ b/src/nm-hal-manager.c @@ -254,7 +254,7 @@ device_removed (LibHalContext *ctx, const char *udi) // nm_debug ("Device removed (hal udi is '%s').", udi ); if ((dev = nm_manager_get_device_by_udi (manager->nm_manager, udi))) - nm_manager_remove_device (manager->nm_manager, dev); + nm_manager_remove_device (manager->nm_manager, dev, TRUE); } static void diff --git a/src/nm-manager.c b/src/nm-manager.c index e553c5e7db..36380e0f34 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -194,7 +194,7 @@ finalize (GObject *object) priv->system_connections = NULL; while (g_slist_length (priv->devices)) - nm_manager_remove_device (manager, NM_DEVICE (priv->devices->data)); + nm_manager_remove_device (manager, NM_DEVICE (priv->devices->data), TRUE); G_OBJECT_CLASS (nm_manager_parent_class)->finalize (object); } @@ -997,7 +997,7 @@ manager_device_removed (NMManager *manager, NMDevice *device) } void -nm_manager_remove_device (NMManager *manager, NMDevice *device) +nm_manager_remove_device (NMManager *manager, NMDevice *device, gboolean deactivate) { NMManagerPrivate *priv; GSList *iter; @@ -1012,6 +1012,8 @@ nm_manager_remove_device (NMManager *manager, NMDevice *device) priv->devices = g_slist_delete_link (priv->devices, iter); nm_device_bring_down (device, FALSE); + if (deactivate) + nm_device_interface_deactivate (NM_DEVICE_INTERFACE (device)); g_signal_handlers_disconnect_by_func (device, manager_device_state_changed, manager); @@ -1468,7 +1470,7 @@ nm_manager_sleep (NMManager *manager, gboolean sleep) nm_info ("Waking up from sleep."); while (g_slist_length (priv->devices)) - nm_manager_remove_device (manager, NM_DEVICE (priv->devices->data)); + nm_manager_remove_device (manager, NM_DEVICE (priv->devices->data), FALSE); priv->devices = NULL; } diff --git a/src/nm-manager.h b/src/nm-manager.h index 9ad304c3d9..a05b3f5f35 100644 --- a/src/nm-manager.h +++ b/src/nm-manager.h @@ -62,7 +62,7 @@ NMManager *nm_manager_new (void); /* Device handling */ void nm_manager_add_device (NMManager *manager, NMDevice *device); -void nm_manager_remove_device (NMManager *manager, NMDevice *device); +void nm_manager_remove_device (NMManager *manager, NMDevice *device, gboolean deactivate); GSList *nm_manager_get_devices (NMManager *manager); NMDevice *nm_manager_get_device_by_path (NMManager *manager, const char *path); NMDevice *nm_manager_get_device_by_udi (NMManager *manager, const char *udi);