mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-11 20:06:18 +01:00
keyfile: Delay calling g_get_language_names() until it's needed
The g_get_languages() call is quite costly and often unneeded.
This commit is contained in:
parent
efcbf1f137
commit
037f1ce672
@ -510,6 +510,7 @@ struct _GKeyFile
|
|||||||
|
|
||||||
GKeyFileFlags flags;
|
GKeyFileFlags flags;
|
||||||
|
|
||||||
|
gboolean checked_locales;
|
||||||
gchar **locales;
|
gchar **locales;
|
||||||
|
|
||||||
gint ref_count; /* (atomic) */
|
gint ref_count; /* (atomic) */
|
||||||
@ -635,7 +636,6 @@ g_key_file_init (GKeyFile *key_file)
|
|||||||
key_file->parse_buffer = g_string_sized_new (128);
|
key_file->parse_buffer = g_string_sized_new (128);
|
||||||
key_file->list_separator = ';';
|
key_file->list_separator = ';';
|
||||||
key_file->flags = 0;
|
key_file->flags = 0;
|
||||||
key_file->locales = g_strdupv ((gchar **)g_get_language_names ());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1232,6 +1232,12 @@ g_key_file_locale_is_interesting (GKeyFile *key_file,
|
|||||||
if (key_file->flags & G_KEY_FILE_KEEP_TRANSLATIONS)
|
if (key_file->flags & G_KEY_FILE_KEEP_TRANSLATIONS)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
if (!key_file->checked_locales && !key_file->locales)
|
||||||
|
{
|
||||||
|
key_file->locales = g_strdupv ((gchar **)g_get_language_names ());
|
||||||
|
key_file->checked_locales = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; key_file->locales[i] != NULL; i++)
|
for (i = 0; key_file->locales[i] != NULL; i++)
|
||||||
{
|
{
|
||||||
if (g_ascii_strcasecmp (key_file->locales[i], locale) == 0)
|
if (g_ascii_strcasecmp (key_file->locales[i], locale) == 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user