gdi32: Do not skip the font metrics update after the DC transform change

Dmitry Timoshkov dmitry at codeweavers.com
Wed Oct 1 16:16:26 CDT 2008


This patch makes the following code sequence work

hfont = CreateFont();
SelectObject(hdc, hfont);
SetWorldTransform(hdc, &xform);

and fixes the bug 7186.
---
 dlls/gdi32/font.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index 1e8cac3..21d2ebb 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -484,14 +484,11 @@ static HGDIOBJ FONT_SelectObject( HGDIOBJ handle, HDC hdc )
         return 0;
     }
 
-    if (dc->hFont != handle || dc->gdiFont == NULL)
+    if (GetDeviceCaps( dc->hSelf, TEXTCAPS ) & TC_VA_ABLE)
     {
-        if(GetDeviceCaps(dc->hSelf, TEXTCAPS) & TC_VA_ABLE)
-        {
-            FONTOBJ *font = GDI_GetObjPtr( handle, FONT_MAGIC );  /* to grab the GDI lock (FIXME) */
-            dc->gdiFont = WineEngCreateFontInstance(dc, handle);
-            if (font) GDI_ReleaseObj( handle );
-        }
+        FONTOBJ *font = GDI_GetObjPtr( handle, FONT_MAGIC ); /* to grab the GDI lock (FIXME) */
+        dc->gdiFont = WineEngCreateFontInstance( dc, handle );
+        if (font) GDI_ReleaseObj( handle );
     }
 
     if (dc->funcs->pSelectFont) ret = dc->funcs->pSelectFont( dc->physDev, handle, dc->gdiFont );
-- 
1.6.0.2




More information about the wine-patches mailing list