[2/2]dwrite: basic implementation for FontCollectionLoader registration
Aric Stewart
aric at codeweavers.com
Mon Aug 4 08:30:31 CDT 2014
On 8/1/14, 1:48 PM, Nikolay Sivov wrote:
>> + IDWriteFontCollectionLoader **CollectionLoaders;
>> + LONG CollectionLoaderCount;
>
> I'd really like a better naming for those, something like 'loaders' and 'loaders_count'.
Easy to do.
>
>> + if (i == This->CollectionLoaderCount)
>> + {
>> + This->CollectionLoaderCount++;
>> + if (This->CollectionLoaders)
>> + This->CollectionLoaders = heap_realloc(This->CollectionLoaders, This->CollectionLoaderCount * sizeof(IDWriteFontCollectionLoader*));
>> + else
>> + This->CollectionLoaders = heap_alloc(This->CollectionLoaderCount * sizeof(IDWriteFontCollectionLoader*));
>> + if (!This->CollectionLoaders)
>> + return E_OUTOFMEMORY;
>> + }
>> + IDWriteFontCollectionLoader_AddRef(loader);
>> + This->CollectionLoaders[i] = loader;
>
> This should grow more efficiently in my opinion. Also it probably makes sense to have small number of slots allocated on initial factory creation or even use a list (you don't need index access). Another question is do we want to register a default local loader on factory creation or not.
Do we have any evidence that an application will realistically use more than 1 or 2 of these. I guess we will have to check with what Word 2013 does because it is likely that would be the worse case. I am guessing that 90% of the applications using direct write do not use this at all. So preallocating feels like it would mostly be a waste of memory.
-aric
More information about the wine-devel
mailing list