Chromium Code Reviews| Index: dm/DMSrcSink.cpp |
| diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp |
| index 84af854deae65c8597cd30839d98034795df5978..b6e59d9fd10a66361eb8495a04b13985a54e9945 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 false; |
|
scroggo
2016/03/11 19:10:48
It looks like this method should return an error s
msarett
2016/03/11 19:20:14
Haha yeah. Interesting that the compiler let me g
|
| + } |
| +#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"; |