| 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";
|
|
|