gtimezone: Tidy up UTC timezone creation

Move the separate function inline using g_once_init_{enter,leave}(),
rather than g_once().

This marginally improves performance, taking 0.39s to create 10000000
UTC timezones, rather than 0.43s previously. (Who cares?)

Follow-up to !1105.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
This commit is contained in:
Philip Withnall 2019-10-25 18:32:48 +01:00
parent 73d557981d
commit a8ef5fdf8a

View File

@ -1676,20 +1676,19 @@ g_time_zone_new (const gchar *identifier)
*
* Since: 2.26
**/
static gpointer
g_time_zone_utc_init (gpointer data)
{
return g_time_zone_new ("UTC");
}
GTimeZone *
g_time_zone_new_utc (void)
{
static GOnce utc_once = G_ONCE_INIT;
static GTimeZone *utc = NULL;
static gsize initialised;
g_once (&utc_once, g_time_zone_utc_init, NULL);
if (g_once_init_enter (&initialised))
{
utc = g_time_zone_new ("UTC");
g_once_init_leave (&initialised, TRUE);
}
return g_time_zone_ref ((GTimeZone *)utc_once.retval);
return g_time_zone_ref (utc);
}
/**