dwrite: Block attempts of registering local file loader.
This commit is contained in:
parent
be69977cd5
commit
5b10a69c3a
|
@ -813,6 +813,9 @@ static HRESULT WINAPI dwritefactory_RegisterFontFileLoader(IDWriteFactory *iface
|
||||||
if (!loader)
|
if (!loader)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
|
if ((IDWriteFontFileLoader*)This->localfontfileloader == loader)
|
||||||
|
return S_OK;
|
||||||
|
|
||||||
if (factory_get_file_loader(This, loader))
|
if (factory_get_file_loader(This, loader))
|
||||||
return DWRITE_E_ALREADYREGISTERED;
|
return DWRITE_E_ALREADYREGISTERED;
|
||||||
|
|
||||||
|
@ -838,6 +841,9 @@ static HRESULT WINAPI dwritefactory_UnregisterFontFileLoader(IDWriteFactory *ifa
|
||||||
if (!loader)
|
if (!loader)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
|
if ((IDWriteFontFileLoader*)This->localfontfileloader == loader)
|
||||||
|
return S_OK;
|
||||||
|
|
||||||
found = factory_get_file_loader(This, loader);
|
found = factory_get_file_loader(This, loader);
|
||||||
if (!found)
|
if (!found)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
|
@ -885,8 +885,7 @@ static void test_system_fontcollection(void)
|
||||||
ok(coll2 == collection, "got %p, was %p\n", coll2, collection);
|
ok(coll2 == collection, "got %p, was %p\n", coll2, collection);
|
||||||
IDWriteFontCollection_Release(coll2);
|
IDWriteFontCollection_Release(coll2);
|
||||||
|
|
||||||
hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_ISOLATED, &IID_IDWriteFactory, (IUnknown**)&factory2);
|
factory2 = create_factory();
|
||||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
|
||||||
hr = IDWriteFactory_GetSystemFontCollection(factory2, &coll2, FALSE);
|
hr = IDWriteFactory_GetSystemFontCollection(factory2, &coll2, FALSE);
|
||||||
ok(hr == S_OK, "got 0x%08x\n", hr);
|
ok(hr == S_OK, "got 0x%08x\n", hr);
|
||||||
ok(coll2 != collection, "got %p, was %p\n", coll2, collection);
|
ok(coll2 != collection, "got %p, was %p\n", coll2, collection);
|
||||||
|
@ -943,6 +942,19 @@ if (file) {
|
||||||
ok(hr == S_OK || broken(hr == DWRITE_E_ALREADYREGISTERED), "got 0x%08x\n", hr);
|
ok(hr == S_OK || broken(hr == DWRITE_E_ALREADYREGISTERED), "got 0x%08x\n", hr);
|
||||||
hr = IDWriteFactory_UnregisterFontFileLoader(factory, loader);
|
hr = IDWriteFactory_UnregisterFontFileLoader(factory, loader);
|
||||||
ok(hr == S_OK || broken(hr == E_INVALIDARG), "got 0x%08x\n", hr);
|
ok(hr == S_OK || broken(hr == E_INVALIDARG), "got 0x%08x\n", hr);
|
||||||
|
|
||||||
|
/* try with a different factory */
|
||||||
|
factory2 = create_factory();
|
||||||
|
hr = IDWriteFactory_RegisterFontFileLoader(factory2, loader);
|
||||||
|
ok(hr == S_OK || broken(hr == DWRITE_E_ALREADYREGISTERED), "got 0x%08x\n", hr);
|
||||||
|
hr = IDWriteFactory_RegisterFontFileLoader(factory2, loader);
|
||||||
|
ok(hr == DWRITE_E_ALREADYREGISTERED, "got 0x%08x\n", hr);
|
||||||
|
hr = IDWriteFactory_UnregisterFontFileLoader(factory2, loader);
|
||||||
|
ok(hr == S_OK || broken(hr == E_INVALIDARG), "got 0x%08x\n", hr);
|
||||||
|
hr = IDWriteFactory_UnregisterFontFileLoader(factory2, loader);
|
||||||
|
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
|
||||||
|
IDWriteFactory_Release(factory2);
|
||||||
|
|
||||||
IDWriteFontFileLoader_Release(loader);
|
IDWriteFontFileLoader_Release(loader);
|
||||||
}
|
}
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
|
Loading…
Reference in New Issue