Alexandre Julliard : gdi32: Don' t pass a DC handle to WineEngGetFontUnicodeRanges.

Alexandre Julliard julliard at winehq.org
Thu Sep 27 09:27:19 CDT 2007


Module: wine
Branch: master
Commit: 543270dfb53a2eb832e669bfab13b9699e11ec16
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=543270dfb53a2eb832e669bfab13b9699e11ec16

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Sep 26 20:17:13 2007 +0200

gdi32: Don't pass a DC handle to WineEngGetFontUnicodeRanges.

---

 dlls/gdi32/font.c        |   11 ++++++++++-
 dlls/gdi32/freetype.c    |   25 +++++++------------------
 dlls/gdi32/gdi_private.h |    2 +-
 3 files changed, 18 insertions(+), 20 deletions(-)

diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index 44a3dde..59b6780 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -3411,5 +3411,14 @@ BOOL WINAPI GetCharWidthI(HDC hdc, UINT first, UINT count, LPWORD glyphs, LPINT
  */
 DWORD WINAPI GetFontUnicodeRanges(HDC hdc, LPGLYPHSET lpgs)
 {
-    return WineEngGetFontUnicodeRanges(hdc, lpgs);
+    DWORD ret = 0;
+    DC *dc = DC_GetDCPtr(hdc);
+
+    TRACE("(%p, %p)\n", hdc, lpgs);
+
+    if (!dc) return 0;
+
+    if (dc->gdiFont) ret = WineEngGetFontUnicodeRanges(dc->gdiFont, lpgs);
+    DC_ReleaseDCPtr(dc);
+    return ret;
 }
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c
index 89f8b22..cc784ea 100644
--- a/dlls/gdi32/freetype.c
+++ b/dlls/gdi32/freetype.c
@@ -4634,28 +4634,17 @@ static DWORD get_font_unicode_ranges(FT_Face face, GLYPHSET *gs)
     return num_ranges;
 }
 
-DWORD WineEngGetFontUnicodeRanges(HDC hdc, LPGLYPHSET glyphset)
+DWORD WineEngGetFontUnicodeRanges(GdiFont *font, LPGLYPHSET glyphset)
 {
     DWORD size = 0;
-    DC *dc = DC_GetDCPtr(hdc);
-
-    TRACE("(%p, %p)\n", hdc, glyphset);
+    DWORD num_ranges = get_font_unicode_ranges(font->ft_face, glyphset);
 
-    if (!dc) return 0;
-
-    if (dc->gdiFont)
+    size = sizeof(GLYPHSET) + sizeof(WCRANGE) * (num_ranges - 1);
+    if (glyphset)
     {
-        DWORD num_ranges = get_font_unicode_ranges(dc->gdiFont->ft_face, glyphset);
-
-        size = sizeof(GLYPHSET) + sizeof(WCRANGE) * (num_ranges - 1);
-        if (glyphset)
-        {
-            glyphset->cbThis = size;
-            glyphset->cRanges = num_ranges;
-        }
+        glyphset->cbThis = size;
+        glyphset->cRanges = num_ranges;
     }
-
-    DC_ReleaseDCPtr(dc);
     return size;
 }
 
@@ -5079,7 +5068,7 @@ BOOL WineEngGetLinkedHFont(DC *dc, WCHAR c, HFONT *new_hfont, UINT *glyph)
     return FALSE;
 }
 
-DWORD WineEngGetFontUnicodeRanges(HDC hdc, LPGLYPHSET glyphset)
+DWORD WineEngGetFontUnicodeRanges(GdiFont *font, LPGLYPHSET glyphset)
 {
     FIXME("(%p, %p): stub\n", hdc, glyphset);
     return 0;
diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h
index adad616..0904049 100644
--- a/dlls/gdi32/gdi_private.h
+++ b/dlls/gdi32/gdi_private.h
@@ -430,7 +430,7 @@ extern BOOL WineEngGetCharABCWidthsI(GdiFont *font, UINT firstChar,
                                     UINT count, LPWORD pgi, LPABC buffer);
 extern BOOL WineEngGetCharWidth(GdiFont*, UINT, UINT, LPINT);
 extern DWORD WineEngGetFontData(GdiFont*, DWORD, DWORD, LPVOID, DWORD);
-extern DWORD WineEngGetFontUnicodeRanges(HDC, LPGLYPHSET);
+extern DWORD WineEngGetFontUnicodeRanges(GdiFont *, LPGLYPHSET);
 extern DWORD WineEngGetGlyphIndices(GdiFont *font, LPCWSTR lpstr, INT count,
                                     LPWORD pgi, DWORD flags);
 extern DWORD WineEngGetGlyphOutline(GdiFont*, UINT glyph, UINT format,




More information about the wine-cvs mailing list