| Index: ui/gfx/win/direct_write.cc
|
| diff --git a/ui/gfx/win/direct_write.cc b/ui/gfx/win/direct_write.cc
|
| index 38c926a9bd11da661c3e66b614c177427a6bf6ae..9c8250b5bbf5175e7e339e7b72fbae5cfd550ecd 100644
|
| --- a/ui/gfx/win/direct_write.cc
|
| +++ b/ui/gfx/win/direct_write.cc
|
| @@ -4,8 +4,6 @@
|
|
|
| #include "ui/gfx/win/direct_write.h"
|
|
|
| -#include <dwrite.h>
|
| -
|
| #include "base/basictypes.h"
|
| #include "base/command_line.h"
|
| #include "base/metrics/field_trial.h"
|
| @@ -57,12 +55,7 @@ bool ShouldUseDirectWrite() {
|
| return group_name != "Disabled";
|
| }
|
|
|
| -void MaybeInitializeDirectWrite() {
|
| - static bool tried_dwrite_initialize = false;
|
| - if (tried_dwrite_initialize)
|
| - return;
|
| - tried_dwrite_initialize = true;
|
| -
|
| +void CreateDWriteFactory(IDWriteFactory** factory) {
|
| if (!ShouldUseDirectWrite() ||
|
| base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kDisableDirectWriteForUI)) {
|
| @@ -81,13 +74,26 @@ void MaybeInitializeDirectWrite() {
|
| if (!dwrite_create_factory_proc)
|
| return;
|
|
|
| + // Failure to create the DirectWrite factory indicates a corrupt dll.
|
| + base::win::ScopedComPtr<IUnknown> factory_unknown;
|
| + if (FAILED(dwrite_create_factory_proc(DWRITE_FACTORY_TYPE_SHARED,
|
| + __uuidof(IDWriteFactory),
|
| + factory_unknown.Receive()))) {
|
| + return;
|
| + }
|
| + factory_unknown.QueryInterface<IDWriteFactory>(factory);
|
| +}
|
| +
|
| +void MaybeInitializeDirectWrite() {
|
| + static bool tried_dwrite_initialize = false;
|
| + if (tried_dwrite_initialize)
|
| + return;
|
| + tried_dwrite_initialize = true;
|
| +
|
| base::win::ScopedComPtr<IDWriteFactory> factory;
|
| + CreateDWriteFactory(factory.Receive());
|
|
|
| - // Failure to create the DirectWrite factory indicates a corrupt dll.
|
| - if (FAILED(dwrite_create_factory_proc(
|
| - DWRITE_FACTORY_TYPE_SHARED,
|
| - __uuidof(IDWriteFactory),
|
| - reinterpret_cast<IUnknown**>(factory.Receive()))))
|
| + if (factory == nullptr)
|
| return;
|
|
|
| // The skia call to create a new DirectWrite font manager instance can fail
|
|
|