From 7d424355e2e71a30ef12bc5a3289c640bcccca73 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Wed, 17 Oct 2007 11:36:33 +0000 Subject: [PATCH] 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) git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2985 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 10 ++++++++++ src/nm-hal-manager.c | 2 +- src/nm-manager.c | 8 +++++--- src/nm-manager.h | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) 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);