diff options
author | Chun-wei Fan <fanchunwei@src.gnome.org> | 2022-12-16 12:15:39 +0800 |
---|---|---|
committer | Chun-wei Fan <fanchunwei@src.gnome.org> | 2022-12-23 16:56:32 +0800 |
commit | 70ac013544f6ff67079a235ef5c67551654beea5 (patch) | |
tree | fbdd911dde73db7369b2e5409783f95d3175ed68 /pango/pangowin32.c | |
parent | 8d334a2bf21219418a0c017ba9679544d2d27c2a (diff) | |
download | pango-70ac013544f6ff67079a235ef5c67551654beea5.tar.gz |
PangoWin32: Avoid initializing DirectWrite repeatedly
Make sure that we use the GPrivate to grab the DirectWrite boilerplate items
that we might have setup, and only attempt to initialize DirectWrite if the
items have not been previously setup.
Diffstat (limited to 'pango/pangowin32.c')
-rw-r--r-- | pango/pangowin32.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/pango/pangowin32.c b/pango/pangowin32.c index 5a26ee98..7b6325a5 100644 --- a/pango/pangowin32.c +++ b/pango/pangowin32.c @@ -133,7 +133,6 @@ HDC _pango_win32_get_display_dc (void) { HDC hdc = g_private_get (&display_dc_key); - PangoWin32DWriteItems *items; if (hdc == NULL) { @@ -154,12 +153,8 @@ _pango_win32_get_display_dc (void) #endif } - items = g_private_get (&dwrite_items); - if (items == NULL) - { - items = pango_win32_init_direct_write (); - g_private_set (&dwrite_items, items); - } + /* ensure DirectWrite is initialized */ + pango_win32_get_direct_write_items (); return hdc; } @@ -167,7 +162,15 @@ _pango_win32_get_display_dc (void) PangoWin32DWriteItems * pango_win32_get_direct_write_items (void) { - return g_private_get (&dwrite_items); + PangoWin32DWriteItems *items = g_private_get (&dwrite_items); + + if (items == NULL) + { + items = pango_win32_init_direct_write (); + g_private_set (&dwrite_items, items); + } + + return items; } /** |