From aa89e85d0b0f7cfc0d232b74ed120762d29b0e6c Mon Sep 17 00:00:00 2001 From: Christopher Aillon Date: Mon, 17 Oct 2005 21:37:26 +0000 Subject: [PATCH] 2005-10-17 Christopher Aillon * gnome/libnm_glib/libnm_glib.c: Make libnm_glib_unregister_callback () actually unregister the callback git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1034 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 5 +++++ gnome/libnm_glib/libnm_glib.c | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/ChangeLog b/ChangeLog index 01036f6a8..22d9efaf4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-10-17 Christopher Aillon + + * gnome/libnm_glib/libnm_glib.c: + Make libnm_glib_unregister_callback () actually unregister the callback + 2005-10-17 Robert Love * src/NetworkManagerDevice.c: Actually wait 20s, as we intend, not diff --git a/gnome/libnm_glib/libnm_glib.c b/gnome/libnm_glib/libnm_glib.c index 8ec7ee3c4..d5c79eb72 100644 --- a/gnome/libnm_glib/libnm_glib.c +++ b/gnome/libnm_glib/libnm_glib.c @@ -134,6 +134,17 @@ static void libnm_glib_schedule_single_callback (libnm_glib_ctx *ctx, libnm_glib g_source_unref (source); } +static void libnm_glib_unschedule_single_callback (libnm_glib_ctx *ctx, libnm_glib_callback *callback) +{ + GSource *source; + + g_return_if_fail (ctx != NULL); + g_return_if_fail (callback != NULL); + + source = g_main_context_find_source_by_user_data (callback->gmain_ctx, callback); + if (source) + g_source_destroy (source); +} static void libnm_glib_call_callbacks (libnm_glib_ctx *ctx) { @@ -525,6 +536,7 @@ void libnm_glib_unregister_callback (libnm_glib_ctx *ctx, guint id) libnm_glib_callback *callback = (libnm_glib_callback *)(elem->data); if (callback && (callback->id == id)) { + libnm_glib_unschedule_single_callback (ctx, callback); ctx->callbacks = g_slist_remove_link (ctx->callbacks, elem); break; }