Nikolay Sivov : dwrite: Do not create intermediate object to return face reference from family.

Alexandre Julliard julliard at winehq.org
Mon Feb 3 15:06:07 CST 2020


Module: wine
Branch: master
Commit: 82df524e7ed541b1500548c26db632e33460e045
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=82df524e7ed541b1500548c26db632e33460e045

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Feb  3 19:08:30 2020 +0300

dwrite: Do not create intermediate object to return face reference from family.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dwrite/font.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index 507099b24e..a3d36a5206 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -2429,21 +2429,19 @@ static HRESULT WINAPI dwritefontfamily1_GetFont(IDWriteFontFamily2 *iface, UINT3
 static HRESULT WINAPI dwritefontfamily1_GetFontFaceReference(IDWriteFontFamily2 *iface, UINT32 index,
         IDWriteFontFaceReference **reference)
 {
-    IDWriteFont3 *font;
-    HRESULT hr;
+    struct dwrite_fontfamily *family = impl_from_IDWriteFontFamily2(iface);
+    const struct dwrite_font_data *font;
 
     TRACE("%p, %u, %p.\n", iface, index, reference);
 
     *reference = NULL;
 
-    hr = IDWriteFontFamily2_GetFont(iface, index, &font);
-    if (FAILED(hr))
-        return hr;
-
-    hr = IDWriteFont3_GetFontFaceReference(font, reference);
-    IDWriteFont3_Release(font);
+    if (index >= family->data->count)
+        return E_FAIL;
 
-    return hr;
+    font = family->data->fonts[index];
+    return IDWriteFactory5_CreateFontFaceReference_((IDWriteFactory5 *)family->collection->factory,
+            font->file, font->face_index, font->simulations, reference);
 }
 
 static HRESULT WINAPI dwritefontfamily2_GetMatchingFonts(IDWriteFontFamily2 *iface,




More information about the wine-cvs mailing list