[pango: 20/31] Fix MT-unsafe initializations
- From: Behdad Esfahbod <behdad src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango: 20/31] Fix MT-unsafe initializations
- Date: Sun, 5 Apr 2015 20:05:29 +0000 (UTC)
commit ef69cbb18b00d7e454cf881a8f58bdabad04ecef
Author: Behdad Esfahbod <behdad behdad org>
Date: Sat Apr 4 17:07:07 2015 -0700
Fix MT-unsafe initializations
pango/pangocoretext.c | 4 ++--
pango/pangofc-font.c | 4 ++--
pango/pangoft2-fontmap.c | 2 +-
pango/pangowin32.c | 9 +++++----
4 files changed, 10 insertions(+), 9 deletions(-)
---
diff --git a/pango/pangocoretext.c b/pango/pangocoretext.c
index dc5769b..be1d42e 100644
--- a/pango/pangocoretext.c
+++ b/pango/pangocoretext.c
@@ -172,8 +172,8 @@ pango_core_text_font_find_shaper (PangoFont *font,
guint32 ch)
{
static PangoEngineShape *shaper;
- if (!shaper)
- shaper = g_object_new (pango_core_text_shape_engine_get_type(), NULL); /* XXX MT-unsafe */
+ if (g_once_init_enter (&shaper))
+ g_once_init_leave (&shaper, g_object_new (pango_core_text_shape_engine_get_type(), NULL));
return shaper;
}
diff --git a/pango/pangofc-font.c b/pango/pangofc-font.c
index 79dbbbc..b463e90 100644
--- a/pango/pangofc-font.c
+++ b/pango/pangofc-font.c
@@ -342,8 +342,8 @@ pango_fc_font_find_shaper (PangoFont *font G_GNUC_UNUSED,
guint32 ch)
{
static PangoEngineShape *shaper;
- if (!shaper)
- shaper = g_object_new (pango_fc_shape_engine_get_type(), NULL); /* XXX MT-unsafe */
+ if (g_once_init_enter (&shaper))
+ g_once_init_leave (&shaper, g_object_new (pango_fc_shape_engine_get_type(), NULL));
return shaper;
}
diff --git a/pango/pangoft2-fontmap.c b/pango/pangoft2-fontmap.c
index 1904f01..ee27f7f 100644
--- a/pango/pangoft2-fontmap.c
+++ b/pango/pangoft2-fontmap.c
@@ -311,7 +311,7 @@ PangoFontMap *
pango_ft2_font_map_for_display (void)
{
if (g_once_init_enter (&pango_ft2_global_fontmap))
- g_once_init_leave(&pango_ft2_global_fontmap, PANGO_FT2_FONT_MAP (pango_ft2_font_map_new ()));
+ g_once_init_leave (&pango_ft2_global_fontmap, PANGO_FT2_FONT_MAP (pango_ft2_font_map_new ()));
return PANGO_FONT_MAP (pango_ft2_global_fontmap);
}
diff --git a/pango/pangowin32.c b/pango/pangowin32.c
index 6e2ba26..b663473 100644
--- a/pango/pangowin32.c
+++ b/pango/pangowin32.c
@@ -156,9 +156,9 @@ _pango_win32_font_init (PangoWin32Font *win32font)
HDC
pango_win32_get_dc (void)
{
- if (_pango_win32_hdc == NULL) /* TODO: MT-unsafe. Use g_once_init/leave */
+ if (g_once_init_enter (&_pango_win32_hdc))
{
- _pango_win32_hdc = CreateDC ("DISPLAY", NULL, NULL, NULL);
+ HDC hdc = CreateDC ("DISPLAY", NULL, NULL, NULL);
memset (&_pango_win32_os_version_info, 0,
sizeof (_pango_win32_os_version_info));
_pango_win32_os_version_info.dwOSVersionInfoSize =
@@ -173,6 +173,7 @@ pango_win32_get_dc (void)
if (getenv ("PANGO_WIN32_DEBUG") != NULL)
_pango_win32_debug = TRUE;
#endif
+ g_once_init_leave (&_pango_win32_hdc, hdc);
}
return _pango_win32_hdc;
@@ -970,8 +971,8 @@ pango_win32_font_find_shaper (PangoFont *font,
guint32 ch)
{
static PangoEngineShape *shaper;
- if (!shaper)
- shaper = g_object_new (pango_win32_shape_engine_get_type(), NULL); /* XXX MT-unsafe */
+ if (g_once_init_enter (&shaper))
+ g_once_init_leave (&shaper, g_object_new (pango_win32_shape_engine_get_type(), NULL));
return shaper;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]