diff options
Diffstat (limited to 'src/images')
-rw-r--r-- | src/images/SkForceLinking.cpp | 35 | ||||
-rw-r--r-- | src/images/SkImageDecoder.cpp | 24 |
2 files changed, 35 insertions, 24 deletions
diff --git a/src/images/SkForceLinking.cpp b/src/images/SkForceLinking.cpp new file mode 100644 index 0000000000..81dbf2eac8 --- /dev/null +++ b/src/images/SkForceLinking.cpp @@ -0,0 +1,35 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkForceLinking.h" +#include "SkImageDecoder.h" + +// This method is required to fool the linker into not discarding the pre-main +// initialization and registration of the decoder classes. Passing true will +// cause memory leaks. +int SkForceLinking(bool doNotPassTrue) { + if (doNotPassTrue) { + SkASSERT(false); + CreateJPEGImageDecoder(); + CreateWEBPImageDecoder(); + CreateBMPImageDecoder(); + CreateICOImageDecoder(); + CreateWBMPImageDecoder(); +#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_WIN) + CreateDefaultDecoder(); +#endif + // 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 + return -1; + } + return 0; +} diff --git a/src/images/SkImageDecoder.cpp b/src/images/SkImageDecoder.cpp index 52c43c83f1..5c078ce630 100644 --- a/src/images/SkImageDecoder.cpp +++ b/src/images/SkImageDecoder.cpp @@ -450,27 +450,3 @@ bool SkImageDecoder::DecodeStream(SkStream* stream, SkBitmap* bm, } return success; } - -/** - * 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(); -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 -} |