From 070558c4c46d6be8898d77d9b2167d44a33f5a0f Mon Sep 17 00:00:00 2001 From: peres Date: Sat, 26 Oct 2013 23:20:22 +0900 Subject: GRAPHICS: do not reset the extra parameters of IFFDecoder on destroy(). The two properties that control pixel packing and the size of the surface need to be preserved for loadStream() to work correctly. They are now under complete responsibility of the client. --- graphics/decoders/iff.cpp | 6 ++++-- graphics/decoders/iff.h | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/graphics/decoders/iff.cpp b/graphics/decoders/iff.cpp index 7b37969fc1..fe27258d28 100644 --- a/graphics/decoders/iff.cpp +++ b/graphics/decoders/iff.cpp @@ -30,6 +30,10 @@ namespace Graphics { IFFDecoder::IFFDecoder() { _surface = 0; _palette = 0; + + // these 2 properties are not reset by destroy(), so the default is set here. + _numRelevantPlanes = 8; + _pixelPacking = false; destroy(); } @@ -54,8 +58,6 @@ void IFFDecoder::destroy() { _paletteRanges.clear(); _type = TYPE_UNKNOWN; _paletteColorCount = 0; - _numRelevantPlanes = 8; - _pixelPacking = false; } bool IFFDecoder::loadStream(Common::SeekableReadStream &stream) { diff --git a/graphics/decoders/iff.h b/graphics/decoders/iff.h index beac62e519..37cb4b38c1 100644 --- a/graphics/decoders/iff.h +++ b/graphics/decoders/iff.h @@ -85,6 +85,8 @@ public: /** * The number of planes to decode, also determines the pixel packing if _packPixels is true. * 8 == decode all planes, map 1 pixel in 1 byte. (default, no packing even if _packPixels is true) + * + * NOTE: this property must be reset manually, and is not reset by a call to destroy(). */ void setNumRelevantPlanes(const uint8 numRelevantPlanes) { _numRelevantPlanes = numRelevantPlanes; } @@ -94,6 +96,8 @@ public: * 2 == decode first 2 planes, pack 4 pixels in 1 byte. This makes _surface->w 1/4th of _header.width * 4 == decode first 4 planes, pack 2 pixels in 1 byte. This makes _surface->w half of _header.width * Packed bitmaps won't have a proper surface format since there is no way to tell it to use 1, 2 or 4 bits per pixel + * + * NOTE: this property must be reset manually, and is not reset by a call to destroy(). */ void setPixelPacking(const bool pixelPacking) { _pixelPacking = pixelPacking; } private: -- cgit v1.2.3