--- /dev/null
+===================================================================
+RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-mime-info-cache.c,v
+retrieving revision 1.21
+retrieving revision 1.21.2.2
+diff -u -r1.21 -r1.21.2.2
+--- gnome-vfs-mime-info-cache.c 2006/03/02 17:04:31 1.21
++++ gnome-vfs/libgnomevfs/gnome-vfs-mime-info-cache.c 2006/05/14 10:07:31 1.21.2.2
+@@ -56,6 +56,8 @@
+ guint should_ping_mime_monitor : 1;
+ } GnomeVFSMimeInfoCache;
+
++G_LOCK_EXTERN (gnome_vfs_mime_mutex);
++
+ extern void _gnome_vfs_mime_monitor_emit_data_changed (GnomeVFSMIMEMonitor *monitor);
+ extern void _gnome_vfs_mime_info_cache_init (void);
+
+@@ -180,6 +182,8 @@
+ if (load_error != NULL)
+ goto error;
+
++ G_LOCK (gnome_vfs_mime_mutex);
++
+ for (i = 0; mime_types[i] != NULL; i++) {
+ gchar **desktop_file_ids;
+ desktop_file_ids = g_key_file_get_string_list (key_file,
+@@ -195,12 +199,14 @@
+ }
+
+ gnome_vfs_mime_info_cache_dir_add_desktop_entries (dir,
+- mime_types[i],
++ xdg_mime_unalias_mime_type (mime_types[i]),
+ desktop_file_ids);
+
+ g_strfreev (desktop_file_ids);
+ }
+
++ G_UNLOCK (gnome_vfs_mime_mutex);
++
+ g_strfreev (mime_types);
+ g_key_file_free (key_file);
+
+@@ -270,6 +276,8 @@
+ if (load_error != NULL)
+ goto error;
+
++ G_LOCK (gnome_vfs_mime_mutex);
++
+ for (i = 0; mime_types[i] != NULL; i++) {
+ desktop_file_ids = g_key_file_get_string_list (key_file,
+ "Default Applications",
+@@ -283,10 +291,12 @@
+ }
+
+ g_hash_table_replace (dir->defaults_list_map,
+- g_strdup (mime_types[i]),
++ g_strdup (xdg_mime_unalias_mime_type (mime_types[i])),
+ desktop_file_ids);
+ }
+
++ G_UNLOCK (gnome_vfs_mime_mutex);
++
+ g_strfreev (mime_types);
+ g_key_file_free (key_file);
+
+@@ -682,6 +692,8 @@
+ GList *l = NULL;
+ int i;
+
++ G_LOCK (gnome_vfs_mime_mutex);
++
+ umime = xdg_mime_unalias_mime_type (mime_type);
+ l = g_list_prepend (l, g_strdup (umime));
+
+@@ -690,6 +702,8 @@
+ for (i = 0; parents && parents[i] != NULL; i++) {
+ l = g_list_prepend (l, g_strdup (parents[i]));
+ }
++
++ G_UNLOCK (gnome_vfs_mime_mutex);
+
+ return g_list_reverse (l);
+ }