[gvfs] MTP: Fix leaked weak reference on monitors.
- From: Philip Langdale <philipl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gvfs] MTP: Fix leaked weak reference on monitors.
- Date: Thu, 24 Jan 2013 18:33:32 +0000 (UTC)
commit 3e0e4d0d9b47d27562e450d45762aa5135320c1f
Author: Philip Langdale <philipl overt org>
Date: Wed Jan 23 11:54:29 2013 -0800
MTP: Fix leaked weak reference on monitors.
We use a weak reference to automatically clean up the monitor
hash table when monitors are finalized. However, we still need
to remember to remove the weak references when the backend is
itself finalized - otherwise the reference might be fired later
if a monitor happens to get finalized before the backend exits
completely.
daemon/gvfsbackendmtp.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/daemon/gvfsbackendmtp.c b/daemon/gvfsbackendmtp.c
index a39e4d1..efd1943 100644
--- a/daemon/gvfsbackendmtp.c
+++ b/daemon/gvfsbackendmtp.c
@@ -131,6 +131,14 @@ g_vfs_backend_mtp_init (GVfsBackendMtp *backend)
}
static void
+remove_monitor_weak_ref (gpointer monitor,
+ gpointer unused,
+ gpointer monitors)
+{
+ g_object_weak_unref (G_OBJECT(monitor), (GWeakNotify)g_hash_table_remove, monitors);
+}
+
+static void
g_vfs_backend_mtp_finalize (GObject *object)
{
GVfsBackendMtp *backend;
@@ -139,6 +147,7 @@ g_vfs_backend_mtp_finalize (GObject *object)
backend = G_VFS_BACKEND_MTP (object);
+ g_hash_table_foreach (backend->monitors, remove_monitor_weak_ref, backend->monitors);
g_hash_table_unref (backend->monitors);
g_mutex_clear (&backend->mutex);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]