From 867254ea7c2b193fecf8cd36cc6e5dc53c290d92 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 29 Jun 2012 20:12:44 +0200 Subject: Imported Upstream version 0.9.5.95 --- libnm-glib/nm-object-cache.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'libnm-glib/nm-object-cache.c') diff --git a/libnm-glib/nm-object-cache.c b/libnm-glib/nm-object-cache.c index 741f1291..2748b1df 100644 --- a/libnm-glib/nm-object-cache.c +++ b/libnm-glib/nm-object-cache.c @@ -64,3 +64,28 @@ _nm_object_cache_get (const char *path) return object ? g_object_ref (object) : NULL; } +void +_nm_object_cache_clear (NMObject *except) +{ + GHashTableIter iter; + NMObject *obj; + const char *path; + char *foo; + + _init_cache (); + g_hash_table_iter_init (&iter, cache); + while (g_hash_table_iter_next (&iter, (gpointer) &path, (gpointer) &obj)) { + if (obj != except) { + /* Remove the callback so that if the object isn't yet released + * by a client, when it does finally get unrefed, it won't trigger + * the cache removal for a new object with the same path as the + * one being released. + */ + foo = g_object_steal_data (G_OBJECT (obj), "nm-object-cache-tag"); + g_free (foo); + + g_hash_table_iter_remove (&iter); + } + } +} + -- cgit 1.3.0-6-gf8a5