Module: wine Branch: master Commit: 42de7a468cd76693f0b3dc0be0a239bc5497a80c URL: http://source.winehq.org/git/wine.git/?a=commit;h=42de7a468cd76693f0b3dc0be0...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Tue Mar 8 22:46:54 2016 +0300
dwrite: Remove flag marking system collections.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dwrite/font.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c index 5d29038..0c04d56 100644 --- a/dlls/dwrite/font.c +++ b/dlls/dwrite/font.c @@ -125,7 +125,6 @@ struct dwrite_fontcollection { struct dwrite_fontfamily_data **family_data; UINT32 family_count; UINT32 family_alloc; - BOOL is_system; };
struct dwrite_fontfamily { @@ -1967,7 +1966,7 @@ BOOL is_system_collection(IDWriteFontCollection *collection) return IDWriteFontCollection_QueryInterface(collection, &IID_issystemcollection, (void**)&obj) == S_OK; }
-static HRESULT WINAPI dwritefontcollection_QueryInterface(IDWriteFontCollection1 *iface, REFIID riid, void **obj) +static HRESULT WINAPI dwritesystemfontcollection_QueryInterface(IDWriteFontCollection1 *iface, REFIID riid, void **obj) { struct dwrite_fontcollection *This = impl_from_IDWriteFontCollection1(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj); @@ -1983,12 +1982,31 @@ static HRESULT WINAPI dwritefontcollection_QueryInterface(IDWriteFontCollection1
*obj = NULL;
- if (This->is_system && IsEqualIID(riid, &IID_issystemcollection)) + if (IsEqualIID(riid, &IID_issystemcollection)) return S_OK;
return E_NOINTERFACE; }
+static HRESULT WINAPI dwritefontcollection_QueryInterface(IDWriteFontCollection1 *iface, REFIID riid, void **obj) +{ + struct dwrite_fontcollection *This = impl_from_IDWriteFontCollection1(iface); + TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), obj); + + if (IsEqualIID(riid, &IID_IDWriteFontCollection1) || + IsEqualIID(riid, &IID_IDWriteFontCollection) || + IsEqualIID(riid, &IID_IUnknown)) + { + *obj = iface; + IDWriteFontCollection1_AddRef(iface); + return S_OK; + } + + *obj = NULL; + + return E_NOINTERFACE; +} + static ULONG WINAPI dwritefontcollection_AddRef(IDWriteFontCollection1 *iface) { struct dwrite_fontcollection *This = impl_from_IDWriteFontCollection1(iface); @@ -2165,6 +2183,18 @@ static const IDWriteFontCollection1Vtbl fontcollectionvtbl = { dwritefontcollection1_GetFontFamily };
+static const IDWriteFontCollection1Vtbl systemfontcollectionvtbl = { + dwritesystemfontcollection_QueryInterface, + dwritefontcollection_AddRef, + dwritefontcollection_Release, + dwritefontcollection_GetFontFamilyCount, + dwritefontcollection_GetFontFamily, + dwritefontcollection_FindFamilyName, + dwritefontcollection_GetFontFromFontFace, + dwritefontcollection1_GetFontSet, + dwritefontcollection1_GetFontFamily +}; + static HRESULT fontfamily_add_font(struct dwrite_fontfamily_data *family_data, struct dwrite_font_data *font_data) { if (family_data->font_count + 1 >= family_data->font_alloc) { @@ -2213,12 +2243,10 @@ static HRESULT fontcollection_add_family(struct dwrite_fontcollection *collectio
static HRESULT init_font_collection(struct dwrite_fontcollection *collection, BOOL is_system) { - collection->IDWriteFontCollection1_iface.lpVtbl = &fontcollectionvtbl; + collection->IDWriteFontCollection1_iface.lpVtbl = is_system ? &systemfontcollectionvtbl : &fontcollectionvtbl; collection->ref = 1; collection->family_count = 0; collection->family_alloc = is_system ? 30 : 5; - collection->is_system = is_system; - collection->family_data = heap_alloc(sizeof(*collection->family_data) * collection->family_alloc); if (!collection->family_data) return E_OUTOFMEMORY;