Index: src/images/SkImageDecoder.cpp |
diff --git a/src/images/SkImageDecoder.cpp b/src/images/SkImageDecoder.cpp |
index 16cba641db4bade629f2ce5be63a779b41930c64..2c3edc8be5328313ecf9f4dcf191cdbdbb7cb691 100644 |
--- a/src/images/SkImageDecoder.cpp |
+++ b/src/images/SkImageDecoder.cpp |
@@ -339,3 +339,28 @@ bool SkImageDecoder::DecodeStream(SkStream* stream, SkBitmap* bm, |
} |
return success; |
} |
+ |
+namespace { |
+ /** |
+ * This function leaks, but that is okay because it is not intended |
+ * to be called. It is only here so that the linker will include the |
+ * decoders. |
+ * Make sure to keep it in sync with images.gyp, so only the encoders |
+ * which are created on a platform are linked. |
+ */ |
+ void force_linking() { |
+ SkASSERT(false); |
+ CreateJPEGImageDecoder(); |
+ CreateWEBPImageDecoder(); |
+ CreateBMPImageDecoder(); |
+ CreateICOImageDecoder(); |
+ CreateWBMPImageDecoder(); |
+ // Only link GIF and PNG on platforms that build them. See images.gyp |
+#if !defined(SK_BUILD_FOR_MAC) && !defined(SK_BUILD_FOR_WIN) && !defined(SK_BUILD_FOR_NACL) |
+ CreateGIFImageDecoder(); |
+#endif |
+#if !defined(SK_BUILD_FOR_MAC) && !defined(SK_BUILD_FOR_WIN) |
+ CreatePNGImageDecoder(); |
+#endif |
+ } |
+} |