=================================================================== 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); }