Module: wine Branch: master Commit: e4300d616500e1346e1935f14255f082e1097f20 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e4300d616500e1346e1935f142...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jun 24 12:41:40 2013 +0200
gdi32: Cache the font smoothing parameters.
---
dlls/gdi32/font.c | 21 +++++++++++++++------ 1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index 8fb101f..c6bd65b 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -781,6 +781,7 @@ HFONT nulldrv_SelectFont( PHYSDEV dev, HFONT font, UINT *aa_flags ) { static const WCHAR desktopW[] = { 'C','o','n','t','r','o','l',' ','P','a','n','e','l','\', 'D','e','s','k','t','o','p',0 }; + static int orientation = -1, smoothing = -1; LOGFONTW lf; HKEY key;
@@ -797,14 +798,22 @@ HFONT nulldrv_SelectFont( PHYSDEV dev, HFONT font, UINT *aa_flags ) break; case CLEARTYPE_QUALITY: case CLEARTYPE_NATURAL_QUALITY: - if (RegOpenKeyW( HKEY_CURRENT_USER, desktopW, &key )) break; - *aa_flags = get_subpixel_orientation( key ); - RegCloseKey( key ); + if (orientation == -1) + { + if (RegOpenKeyW( HKEY_CURRENT_USER, desktopW, &key )) break; + orientation = get_subpixel_orientation( key ); + RegCloseKey( key ); + } + *aa_flags = orientation; break; default: - if (RegOpenKeyW( HKEY_CURRENT_USER, desktopW, &key )) break; - *aa_flags = get_default_smoothing( key ); - RegCloseKey( key ); + if (smoothing == -1) + { + if (RegOpenKeyW( HKEY_CURRENT_USER, desktopW, &key )) break; + smoothing = get_default_smoothing( key ); + RegCloseKey( key ); + } + *aa_flags = smoothing; break; } return 0;