Speed up GetTextExtentExPointW (Take 3)

Huw Davies h.davies1 at physics.ox.ac.uk
Mon Jul 10 16:12:55 CDT 2006


On Mon, Jul 10, 2006 at 01:24:53PM -0700, Dan Hipschman wrote:
> 
> Hi,
> 
> This is a fix for http://bugs.winehq.org/show_bug.cgi?id=5569  It speeds up
> the loading of the EULA for the trial version of Acrobat by about 50x.  Since
> the last attempt at this fix I improved performance in the case where both
> lpnFit and alpDx are NULL.  I also added a few more tests to cover each of
> the four cases where lpnFit and alpDx are NULL/non-NULL.  The tests pass in
> both Wine and XP Pro.  If you don't accept this, please let me know what I can
> do to improve it.  Thanks.

There are GetTextExtentPoint entry points in both winex11.drv and
wineps.drv.  Both of these will need to be updated to
GetTextExtentExPoint.

For one other niggle see below.

> diff --git a/dlls/gdi/freetype.c b/dlls/gdi/freetype.c
> index 9f52e60..2020d9d 100644
> --- a/dlls/gdi/freetype.c
> +++ b/dlls/gdi/freetype.c
> @@ -3849,32 +3849,43 @@ BOOL WineEngGetCharABCWidthsI(GdiFont fo
...
>  
>      size->cx = 0;
>      WineEngGetTextMetrics(font, &tm);
>      size->cy = tm.tmHeight;
>  
> -    for(idx = 0; idx < count; idx++) {
> -        get_glyph_index_linked(font, wstr[idx], &linked_font, &glyph_index);
> +    for (i = 0; i < count; ++i)
> +    {
> +        get_glyph_index_linked(font, wstr[i], &linked_font, &glyph_index);

Please don't add in this sort of change, it just makes the patch even larger.

Huw.



More information about the wine-devel mailing list