diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c index 4a5434ed..08829f6f 100644 --- a/libgdm/gdm-sessions.c +++ b/libgdm/gdm-sessions.c @@ -184,9 +184,22 @@ collect_sessions_from_directory (const char *dirname) g_dir_close (dir); } +static gboolean +find_translated_name (const char *id, + GdmSessionFile *session, + char *translated_name) +{ + if (g_str_equal (id, "default")) + return FALSE; + + return g_str_equal (session->translated_name, translated_name) ? TRUE : FALSE; +} + static void collect_sessions (void) { + GdmSessionFile *session; + char *translated_name = NULL; int i; const char *xorg_search_dirs[] = { "/etc/X11/sessions/", @@ -223,6 +236,16 @@ collect_sessions (void) collect_sessions_from_directory (wayland_search_dirs [i]); } #endif + + session = g_hash_table_lookup (gdm_available_sessions_map, "default"); + if (session) + translated_name = session->translated_name; + + if (translated_name) { + session = g_hash_table_find (gdm_available_sessions_map, (GHRFunc)find_translated_name, translated_name); + if (session) + g_hash_table_remove (gdm_available_sessions_map, session->id); + } } /**