2006-12-19 Dan Williams <dcbw@redhat.com>

* src/NetworkManagerPolicy.c
		- (nm_policy_device_change_check, nm_policy_schedule_device_change_check):
			better locking of the device change check handler ID.  Incorrect
			locking was causing lost device change requests


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2191 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams
2006-12-19 19:04:04 +00:00
parent 6b089976ad
commit 3834255f8c
2 changed files with 16 additions and 7 deletions

View File

@@ -41,6 +41,9 @@
#include "nm-dbus-manager.h"
static GStaticMutex dev_change_mutex = G_STATIC_MUTEX_INIT;
/*
* nm_policy_activation_finish
*
@@ -290,7 +293,9 @@ nm_policy_device_change_check (NMData *data)
g_return_val_if_fail (data != NULL, FALSE);
g_static_mutex_lock (&dev_change_mutex);
data->dev_change_check_idle_id = 0;
g_static_mutex_unlock (&dev_change_mutex);
old_dev = nm_get_active_device (data);
@@ -450,22 +455,19 @@ out:
*/
void nm_policy_schedule_device_change_check (NMData *data)
{
static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
g_return_if_fail (data != NULL);
g_static_mutex_lock (&mutex);
g_static_mutex_lock (&dev_change_mutex);
if (data->dev_change_check_idle_id == 0)
{
GSource * source = g_idle_source_new ();
if (data->dev_change_check_idle_id == 0) {
GSource * source = g_idle_source_new ();
g_source_set_callback (source, (GSourceFunc) nm_policy_device_change_check, data, NULL);
data->dev_change_check_idle_id = g_source_attach (source, data->main_context);
g_source_unref (source);
}
g_static_mutex_unlock (&mutex);
g_static_mutex_unlock (&dev_change_mutex);
}