| Index: gm/fontmgr.cpp | 
| diff --git a/gm/fontmgr.cpp b/gm/fontmgr.cpp | 
| index 70b91150d03cacf5986be2c8db0e464adba215ee..9c300ab502e38d805d89f43bae5cfd07029ffc50 100644 | 
| --- a/gm/fontmgr.cpp | 
| +++ b/gm/fontmgr.cpp | 
| @@ -11,6 +11,11 @@ | 
| #include "SkGraphics.h" | 
| #include "SkTypeface.h" | 
|  | 
| +#ifdef SK_BUILD_FOR_WIN | 
| +    extern SkFontMgr* SkFontMgr_New_GDI(); | 
| +    extern SkFontMgr* SkFontMgr_New_DirectWrite(); | 
| +#endif | 
| + | 
| // limit this just so we don't take too long to draw | 
| #define MAX_FAMILIES    30 | 
|  | 
| @@ -22,13 +27,21 @@ static SkScalar drawString(SkCanvas* canvas, const SkString& text, SkScalar x, | 
|  | 
| class FontMgrGM : public skiagm::GM { | 
| public: | 
| -    FontMgrGM() { | 
| +    FontMgrGM(SkFontMgr* (*factory)() = NULL) { | 
| SkGraphics::SetFontCacheLimit(16 * 1024 * 1024); | 
| + | 
| +        fName.set("fontmgr_iter"); | 
| +        if (factory) { | 
| +            fName.append("_factory"); | 
| +            fFM.reset(factory()); | 
| +        } else { | 
| +            fFM.reset(SkFontMgr::RefDefault()); | 
| +        } | 
| } | 
|  | 
| protected: | 
| virtual SkString onShortName() { | 
| -        return SkString("fontmgr_iter"); | 
| +        return fName; | 
| } | 
|  | 
| virtual SkISize onISize() { | 
| @@ -43,7 +56,7 @@ protected: | 
| paint.setSubpixelText(true); | 
| paint.setTextSize(17); | 
|  | 
| -        SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault()); | 
| +        SkFontMgr* fm = fFM; | 
| int count = SkMin32(fm->countFamilies(), MAX_FAMILIES); | 
|  | 
| for (int i = 0; i < count; ++i) { | 
| @@ -79,6 +92,8 @@ protected: | 
| } | 
|  | 
| private: | 
| +    SkAutoTUnref<SkFontMgr> fFM; | 
| +    SkString fName; | 
| typedef GM INHERITED; | 
| }; | 
|  | 
| @@ -181,3 +196,7 @@ private: | 
|  | 
| DEF_GM( return SkNEW(FontMgrGM); ) | 
| DEF_GM( return SkNEW(FontMgrMatchGM); ) | 
| + | 
| +#ifdef SK_BUILD_FOR_WIN | 
| +    DEF_GM( return SkNEW_ARGS(FontMgrGM, (SkFontMgr_New_DirectWrite)); ) | 
| +#endif | 
|  |