aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports/SkFontMgr_win_dw.cpp
diff options
context:
space:
mode:
authorGravatar kulshin <kulshin@chromium.org>2016-03-11 15:26:46 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-11 15:26:46 -0800
commit351c0d24f1c093ca48d0d832b1d64df8644f87b7 (patch)
tree40a05fb5d1dd496c1f8194fe1b67d62eb63f2050 /src/ports/SkFontMgr_win_dw.cpp
parentb4ecabd5a2c359f66a20207ffb02a77e624560c4 (diff)
Revert "Initialize the font fallback when the direct write font"
This is apparently causing crashes and hangs in Chromium. Possible cause of 593858 and possible cause of 594047. This reverts commit 042f859c19f71ca9feacddd1cb058ff59eed8963. Conflicts: src/ports/SkFontMgr_win_dw.cpp Review URL: https://codereview.chromium.org/1792473003
Diffstat (limited to 'src/ports/SkFontMgr_win_dw.cpp')
-rw-r--r--src/ports/SkFontMgr_win_dw.cpp50
1 files changed, 17 insertions, 33 deletions
diff --git a/src/ports/SkFontMgr_win_dw.cpp b/src/ports/SkFontMgr_win_dw.cpp
index b4e5c1a9f4..11afec3b53 100644
--- a/src/ports/SkFontMgr_win_dw.cpp
+++ b/src/ports/SkFontMgr_win_dw.cpp
@@ -25,8 +25,6 @@
#if SK_HAS_DWRITE_2_H
#include <dwrite_2.h>
-#else
-struct IDWriteFontFallback;
#endif
////////////////////////////////////////////////////////////////////////////////
@@ -266,11 +264,8 @@ class SkFontMgr_DirectWrite : public SkFontMgr {
public:
/** localeNameLength must include the null terminator. */
SkFontMgr_DirectWrite(IDWriteFactory* factory, IDWriteFontCollection* fontCollection,
- WCHAR* localeName, int localeNameLength, IDWriteFontFallback* fallback)
+ WCHAR* localeName, int localeNameLength)
: fFactory(SkRefComPtr(factory))
-#if SK_HAS_DWRITE_2_H
- , fFontFallback(SkSafeRefComPtr(fallback))
-#endif
, fFontCollection(SkRefComPtr(fontCollection))
, fLocaleName(localeNameLength)
{
@@ -314,7 +309,6 @@ private:
SkTScopedComPtr<IDWriteFactory> fFactory;
#if SK_HAS_DWRITE_2_H
SkTScopedComPtr<IDWriteFactory2> fFactory2;
- SkTScopedComPtr<IDWriteFontFallback> fFontFallback;
#endif
SkTScopedComPtr<IDWriteFontCollection> fFontCollection;
SkSMallocWCHAR fLocaleName;
@@ -768,7 +762,10 @@ SkTypeface* SkFontMgr_DirectWrite::onMatchFamilyStyleCharacter(const char family
}
#if SK_HAS_DWRITE_2_H
- if (fFactory2.get() && fFontFallback.get()) {
+ if (fFactory2.get()) {
+ SkTScopedComPtr<IDWriteFontFallback> fontFallback;
+ HRNM(fFactory2->GetSystemFontFallback(&fontFallback), "Could not get system fallback.");
+
SkTScopedComPtr<IDWriteNumberSubstitution> numberSubstitution;
HRNM(fFactory2->CreateNumberSubstitution(DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE, nullptr, TRUE,
&numberSubstitution),
@@ -779,17 +776,17 @@ SkTypeface* SkFontMgr_DirectWrite::onMatchFamilyStyleCharacter(const char family
UINT32 mappedLength;
SkTScopedComPtr<IDWriteFont> font;
FLOAT scale;
- HRNM(fFontFallback->MapCharacters(fontFallbackSource.get(),
- 0, // textPosition,
- strLen,
- fFontCollection.get(),
- dwFamilyName,
- dwStyle.fWeight,
- dwStyle.fSlant,
- dwStyle.fWidth,
- &mappedLength,
- &font,
- &scale),
+ HRNM(fontFallback->MapCharacters(fontFallbackSource.get(),
+ 0, // textPosition,
+ strLen,
+ fFontCollection.get(),
+ dwFamilyName,
+ dwStyle.fWeight,
+ dwStyle.fSlant,
+ dwStyle.fWidth,
+ &mappedLength,
+ &font,
+ &scale),
"Could not map characters");
if (!font.get()) {
return nullptr;
@@ -1086,18 +1083,6 @@ SK_API SkFontMgr* SkFontMgr_New_DirectWrite(IDWriteFactory* factory,
collection = systemFontCollection.get();
}
- IDWriteFontFallback *fontFallback = nullptr;
-#if SK_HAS_DWRITE_2_H
- SkTScopedComPtr<IDWriteFontFallback> systemFontFallback;
- SkTScopedComPtr<IDWriteFactory2> fFactory2;
- factory->QueryInterface(&fFactory2);
- if (fFactory2.get()) {
- HRNM(fFactory2->GetSystemFontFallback(&systemFontFallback),
- "Could not get system fallback.");
- fontFallback = systemFontFallback.get();
- }
-#endif
-
WCHAR localeNameStorage[LOCALE_NAME_MAX_LENGTH];
WCHAR* localeName = nullptr;
int localeNameLen = 0;
@@ -1114,8 +1099,7 @@ SK_API SkFontMgr* SkFontMgr_New_DirectWrite(IDWriteFactory* factory,
};
}
- return new SkFontMgr_DirectWrite(
- factory, collection, localeName, localeNameLen, fontFallback);
+ return new SkFontMgr_DirectWrite(factory, collection, localeName, localeNameLen);
}
#include "SkFontMgr_indirect.h"