| Index: content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc
|
| diff --git a/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc b/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc
|
| index 9ffd8dd36c62bbfaab2b5b5bfe8ae63897a9a1ba..f71e0d81143fc7c8720a7f7da927338aca506e40 100644
|
| --- a/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc
|
| +++ b/content/child/dwrite_font_proxy/dwrite_font_proxy_init_win.cc
|
| @@ -14,7 +14,9 @@
|
| #include "content/child/dwrite_font_proxy/dwrite_font_proxy_win.h"
|
| #include "content/child/font_warmup_win.h"
|
| #include "skia/ext/fontmgr_default_win.h"
|
| +#include "skia/ext/refptr.h"
|
| #include "third_party/WebKit/public/web/win/WebFontRendering.h"
|
| +#include "third_party/skia/include/ports/SkFontMgr.h"
|
| #include "third_party/skia/include/ports/SkTypeface_win.h"
|
|
|
| namespace mswr = Microsoft::WRL;
|
| @@ -58,24 +60,6 @@ void CreateDirectWriteFactory(IDWriteFactory** factory) {
|
| reinterpret_cast<IUnknown**>(factory))));
|
| }
|
|
|
| -HRESULT STDMETHODCALLTYPE StubFontCollection(IDWriteFactory* factory,
|
| - IDWriteFontCollection** col,
|
| - BOOL checkUpdates) {
|
| - DCHECK(g_font_collection);
|
| - g_font_collection.CopyTo(col);
|
| - return S_OK;
|
| -}
|
| -
|
| -// Copied from content/common/font_warmup_win.cc
|
| -void PatchDWriteFactory(IDWriteFactory* factory) {
|
| - const unsigned int kGetSystemFontCollectionVTableIndex = 3;
|
| -
|
| - PROC* vtable = *reinterpret_cast<PROC**>(factory);
|
| - PROC* function_ptr = &vtable[kGetSystemFontCollectionVTableIndex];
|
| - void* stub_function = &StubFontCollection;
|
| - base::win::ModifyCode(function_ptr, &stub_function, sizeof(PROC));
|
| -}
|
| -
|
| // Needed as a function for Bind()
|
| IPC::Sender* GetSenderOverride() {
|
| return g_sender_override;
|
| @@ -99,11 +83,14 @@ void InitializeDWriteFontProxy(
|
| }
|
| }
|
|
|
| - PatchDWriteFactory(factory.Get());
|
| + skia::RefPtr<SkFontMgr> skia_font_manager = skia::AdoptRef(
|
| + SkFontMgr_New_DirectWrite(factory.Get(), g_font_collection.Get()));
|
| + blink::WebFontRendering::setSkiaFontManager(skia_font_manager.get());
|
|
|
| - blink::WebFontRendering::setDirectWriteFactory(factory.Get());
|
| - SkFontMgr* skia_font_manager = SkFontMgr_New_DirectWrite(factory.Get());
|
| - SetDefaultSkiaFactory(skia_font_manager);
|
| + // Add an extra ref for SetDefaultSkiaFactory, which keeps a ref but doesn't
|
| + // addref.
|
| + skia_font_manager->ref();
|
| + SetDefaultSkiaFactory(skia_font_manager.get());
|
| }
|
|
|
| void UninitializeDWriteFontProxy() {
|
|
|