(resend/renumber)[4/14]dwrite: implement a list of font data for IDWriteFontFamily
Aric Stewart
aric at codeweavers.com
Wed Sep 3 12:12:14 CDT 2014
On Wed Sep 3 11:45:18 2014, Alexandre Julliard wrote:
> Aric Stewart <aric at codeweavers.com> writes:
>
>> @@ -1121,6 +1188,24 @@ static void get_font_properties(struct dwrite_font *font, HDC hdc)
>> }
>> }
>>
>> +static HRESULT create_font_from_data(struct dwrite_font_data *data, IDWriteFont **font)
>> +{
>> + HRESULT hr;
>> + struct dwrite_font *This;
>> +
>> + hr = create_font_base(font);
>> + if (FAILED(hr))
>> + return hr;
>> +
>> + This = impl_from_IDWriteFont(*font);
>> +
>> + heap_free(This->data);
>> + This->data = data;
>> + InterlockedIncrement(&This->data->ref);
>> +
>> + return S_OK;
>> +}
>
> That looks unnecessarily complicated. Why allocate and initialize the
> data only to immediately replace it?
>
There ends up being 2 ways that a IDWriteFont is created, one via
existing data (as shown here) where we do not need the data initialized
and one via an external resource (Such as a logfont or IDWriteFontFace)
where we will use the initialized data.
Would you prefer that I do not alloc/initialize the data in create_font
and instead only alloc/initialize in the external resource case?
thanks!
-aric
More information about the wine-devel
mailing list