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:
@@ -1,3 +1,10 @@
|
|||||||
|
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
|
||||||
|
|
||||||
2006-12-18 Dan Williams <dcbw@redhat.com>
|
2006-12-18 Dan Williams <dcbw@redhat.com>
|
||||||
|
|
||||||
* libnm-util/dbus-dict-helpers.c
|
* libnm-util/dbus-dict-helpers.c
|
||||||
|
@@ -41,6 +41,9 @@
|
|||||||
#include "nm-dbus-manager.h"
|
#include "nm-dbus-manager.h"
|
||||||
|
|
||||||
|
|
||||||
|
static GStaticMutex dev_change_mutex = G_STATIC_MUTEX_INIT;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* nm_policy_activation_finish
|
* nm_policy_activation_finish
|
||||||
*
|
*
|
||||||
@@ -290,7 +293,9 @@ nm_policy_device_change_check (NMData *data)
|
|||||||
|
|
||||||
g_return_val_if_fail (data != NULL, FALSE);
|
g_return_val_if_fail (data != NULL, FALSE);
|
||||||
|
|
||||||
|
g_static_mutex_lock (&dev_change_mutex);
|
||||||
data->dev_change_check_idle_id = 0;
|
data->dev_change_check_idle_id = 0;
|
||||||
|
g_static_mutex_unlock (&dev_change_mutex);
|
||||||
|
|
||||||
old_dev = nm_get_active_device (data);
|
old_dev = nm_get_active_device (data);
|
||||||
|
|
||||||
@@ -450,22 +455,19 @@ out:
|
|||||||
*/
|
*/
|
||||||
void nm_policy_schedule_device_change_check (NMData *data)
|
void nm_policy_schedule_device_change_check (NMData *data)
|
||||||
{
|
{
|
||||||
static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
|
|
||||||
|
|
||||||
g_return_if_fail (data != NULL);
|
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)
|
if (data->dev_change_check_idle_id == 0) {
|
||||||
{
|
GSource * source = g_idle_source_new ();
|
||||||
GSource * source = g_idle_source_new ();
|
|
||||||
|
|
||||||
g_source_set_callback (source, (GSourceFunc) nm_policy_device_change_check, data, NULL);
|
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);
|
data->dev_change_check_idle_id = g_source_attach (source, data->main_context);
|
||||||
g_source_unref (source);
|
g_source_unref (source);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_static_mutex_unlock (&mutex);
|
g_static_mutex_unlock (&dev_change_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user