Huw Davies : wineps.drv: Defer accessing the font metrics until we really need them.
Alexandre Julliard
julliard at winehq.org
Thu Apr 22 11:24:02 CDT 2010
Module: wine
Branch: master
Commit: dea3745eb8ed1b96f54e10bc097396e2fe524760
URL: http://source.winehq.org/git/wine.git/?a=commit;h=dea3745eb8ed1b96f54e10bc097396e2fe524760
Author: Huw Davies <huw at codeweavers.com>
Date: Thu Apr 22 10:11:07 2010 +0100
wineps.drv: Defer accessing the font metrics until we really need them.
---
dlls/wineps.drv/download.c | 33 ++++++++++++---------------------
1 files changed, 12 insertions(+), 21 deletions(-)
diff --git a/dlls/wineps.drv/download.c b/dlls/wineps.drv/download.c
index bf9cb09..a6ab9d0 100644
--- a/dlls/wineps.drv/download.c
+++ b/dlls/wineps.drv/download.c
@@ -196,29 +196,9 @@ static BOOL get_bbox(HDC hdc, RECT *rc, UINT *emsize)
*/
BOOL PSDRV_SelectDownloadFont(PSDRV_PDEVICE *physDev)
{
- char *ps_name;
- LPOUTLINETEXTMETRICA potm;
- DWORD len = GetOutlineTextMetricsA(physDev->hdc, 0, NULL);
-
- if(!len) return FALSE;
- potm = HeapAlloc(GetProcessHeap(), 0, len);
- GetOutlineTextMetricsA(physDev->hdc, len, potm);
- get_download_name(physDev, potm, &ps_name);
-
physDev->font.fontloc = Download;
- physDev->font.fontinfo.Download = is_font_downloaded(physDev, ps_name);
+ physDev->font.fontinfo.Download = NULL;
- physDev->font.size = abs(PSDRV_YWStoDS(physDev, /* ppem */
- potm->otmTextMetrics.tmAscent +
- potm->otmTextMetrics.tmDescent -
- potm->otmTextMetrics.tmInternalLeading));
- physDev->font.underlineThickness = potm->otmsUnderscoreSize;
- physDev->font.underlinePosition = potm->otmsUnderscorePosition;
- physDev->font.strikeoutThickness = potm->otmsStrikeoutSize;
- physDev->font.strikeoutPosition = potm->otmsStrikeoutPosition;
-
- HeapFree(GetProcessHeap(), 0, ps_name);
- HeapFree(GetProcessHeap(), 0, potm);
return TRUE;
}
@@ -241,6 +221,17 @@ BOOL PSDRV_WriteSetDownloadFont(PSDRV_PDEVICE *physDev)
GetOutlineTextMetricsA(physDev->hdc, len, potm);
get_download_name(physDev, potm, &ps_name);
+ physDev->font.fontinfo.Download = is_font_downloaded(physDev, ps_name);
+
+ physDev->font.size = abs(PSDRV_YWStoDS(physDev, /* ppem */
+ potm->otmTextMetrics.tmAscent +
+ potm->otmTextMetrics.tmDescent -
+ potm->otmTextMetrics.tmInternalLeading));
+ physDev->font.underlineThickness = potm->otmsUnderscoreSize;
+ physDev->font.underlinePosition = potm->otmsUnderscorePosition;
+ physDev->font.strikeoutThickness = potm->otmsStrikeoutSize;
+ physDev->font.strikeoutPosition = potm->otmsStrikeoutPosition;
+
if(physDev->font.fontinfo.Download == NULL) {
RECT bbox;
More information about the wine-cvs
mailing list