Nikolay Sivov : dwrite: Grab font data reference when adding replacement.
Alexandre Julliard
julliard at winehq.org
Tue May 30 16:05:13 CDT 2017
Module: wine
Branch: master
Commit: 7524db8937ec6ae94e690dda41cd363d4c37925a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7524db8937ec6ae94e690dda41cd363d4c37925a
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue May 30 10:10:59 2017 +0300
dwrite: Grab font data reference when adding replacement.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dwrite/font.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index a877ad0..0332587 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -405,6 +405,11 @@ static inline void* get_fontface_colr(struct dwrite_fontface *fontface)
return get_fontface_table(&fontface->IDWriteFontFace4_iface, MS_COLR_TAG, &fontface->colr);
}
+static void addref_font_data(struct dwrite_font_data *data)
+{
+ InterlockedIncrement(&data->ref);
+}
+
static void release_font_data(struct dwrite_font_data *data)
{
int i;
@@ -1762,7 +1767,7 @@ static HRESULT create_font(struct dwrite_fontfamily *family, UINT32 index, IDWri
IDWriteFontFamily1_AddRef(&family->IDWriteFontFamily1_iface);
This->data = family->data->fonts[index];
This->style = This->data->style;
- InterlockedIncrement(&This->data->ref);
+ addref_font_data(This->data);
*font = &This->IDWriteFont3_iface;
@@ -2135,7 +2140,7 @@ static HRESULT WINAPI dwritefontfamily_GetMatchingFonts(IDWriteFontFamily1 *ifac
for (i = 0; i < This->data->font_count; i++) {
if (!func || func(This->data->fonts[i])) {
fonts->fonts[fonts->font_count] = This->data->fonts[i];
- InterlockedIncrement(&This->data->fonts[i]->ref);
+ addref_font_data(This->data->fonts[i]);
fonts->font_count++;
}
}
@@ -3554,8 +3559,10 @@ static BOOL fontcollection_add_replacement(struct dwrite_fontcollection *collect
struct dwrite_fontfamily_data *replacement = collection->family_data[i];
WCHAR nameW[255];
- for (i = 0; i < replacement->font_count; i++)
+ for (i = 0; i < replacement->font_count; i++) {
fontfamily_add_font(target, replacement->fonts[i]);
+ addref_font_data(replacement->fonts[i]);
+ }
fontcollection_add_family(collection, target);
fontstrings_get_en_string(replacement->familyname, nameW, sizeof(nameW)/sizeof(WCHAR));
More information about the wine-cvs
mailing list