Index: dm/DMSrcSink.cpp |
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp |
index 84af854deae65c8597cd30839d98034795df5978..59d4bb78d7b5ebbac88c142dcd42adf5d165071e 100644 |
--- a/dm/DMSrcSink.cpp |
+++ b/dm/DMSrcSink.cpp |
@@ -7,6 +7,7 @@ |
#include "DMSrcSink.h" |
#include "SkAndroidCodec.h" |
+#include "SkAutoCoInitialize.h" |
#include "SkCodec.h" |
#include "SkCodecImageGenerator.h" |
#include "SkCommonFlags.h" |
@@ -15,6 +16,7 @@ |
#include "SkError.h" |
#include "SkImageGenerator.h" |
#include "SkImageGeneratorCG.h" |
+#include "SkImageGeneratorWIC.h" |
#include "SkMallocPixelRef.h" |
#include "SkMultiPictureDraw.h" |
#include "SkNullCanvas.h" |
@@ -791,6 +793,14 @@ Error ImageGenSrc::draw(SkCanvas* canvas) const { |
return SkStringPrintf("Couldn't read %s.", fPath.c_str()); |
} |
+#if defined(SK_BUILD_FOR_WIN) |
+ // Initialize COM in order to test with WIC. |
+ SkAutoCoInitialize com; |
+ if (!com.succeeded()) { |
+ return "Could not initialize COM."; |
+ } |
+#endif |
+ |
SkAutoTDelete<SkImageGenerator> gen(nullptr); |
switch (fMode) { |
case kCodec_Mode: |
@@ -799,14 +809,18 @@ Error ImageGenSrc::draw(SkCanvas* canvas) const { |
return "Could not create codec image generator."; |
} |
break; |
+ case kPlatform_Mode: { |
#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) |
- case kPlatform_Mode: |
gen.reset(SkImageGeneratorCG::NewFromEncodedCG(encoded)); |
+#elif defined(SK_BUILD_FOR_WIN) |
+ gen.reset(SkImageGeneratorWIC::NewFromEncodedWIC(encoded)); |
+#endif |
+ |
if (!gen) { |
- return "Could not create CG image generator."; |
+ return "Could not create platform image generator."; |
} |
break; |
-#endif |
+ } |
default: |
SkASSERT(false); |
return "Invalid image generator mode"; |