[Scummvm-cvs-logs] SF.net SVN: scummvm:[35703] scummvm/trunk/engines/scumm/he/wiz_he.cpp
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Sat Jan 3 15:27:19 CET 2009
Revision: 35703
http://scummvm.svn.sourceforge.net/scummvm/?rev=35703&view=rev
Author: Kirben
Date: 2009-01-03 14:27:19 +0000 (Sat, 03 Jan 2009)
Log Message:
-----------
Add missing src checks in drawWizPolygonTransform().
Modified Paths:
--------------
scummvm/trunk/engines/scumm/he/wiz_he.cpp
Modified: scummvm/trunk/engines/scumm/he/wiz_he.cpp
===================================================================
--- scummvm/trunk/engines/scumm/he/wiz_he.cpp 2009-01-03 14:07:17 UTC (rev 35702)
+++ scummvm/trunk/engines/scumm/he/wiz_he.cpp 2009-01-03 14:27:19 UTC (rev 35703)
@@ -1532,20 +1532,38 @@
void Wiz::drawWizPolygonTransform(int resNum, int state, Common::Point *wp, int flags, int shadow, int dstResNum, int palette) {
debug(3, "drawWizPolygonTransform(resNum %d, flags 0x%X, shadow %d dstResNum %d palette %d)", resNum, flags, shadow, dstResNum, palette);
+ const Common::Rect *r = NULL;
+ uint8 *srcWizBuf = NULL;
+ bool freeBuffer = true;
int i;
if (_vm->_game.heversion >= 99) {
- flags |= kWIFBlitToMemBuffer;
+ if (getWizImageData(resNum, state, 0) != 0 || (flags & (kWIFRemapPalette | kWIFFlipX | kWIFFlipY)) || palette != 0) {
+ flags |= kWIFBlitToMemBuffer;
- if (flags & 0x800000) {
- debug(0, "drawWizPolygonTransform() unhandled flag 0x800000");
+ if (flags & 0x800000) {
+ debug(0, "drawWizPolygonTransform() unhandled flag 0x800000");
+ }
+ srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, shadow, 0, r, flags, 0, palette);
+ } else {
+ uint8 *dataPtr = _vm->getResourceAddress(rtImage, resNum);
+ assert(dataPtr);
+ srcWizBuf = _vm->findWrappedBlock(MKID_BE('WIZD'), dataPtr, state, 0);
+ assert(srcWizBuf);
+ freeBuffer = false;
}
} else {
- flags = kWIFBlitToMemBuffer;
+ if (getWizImageData(resNum, state, 0) != 0) {
+ srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, shadow, 0, r, kWIFBlitToMemBuffer, 0, palette);
+ } else {
+ uint8 *dataPtr = _vm->getResourceAddress(rtImage, resNum);
+ assert(dataPtr);
+ srcWizBuf = _vm->findWrappedBlock(MKID_BE('WIZD'), dataPtr, state, 0);
+ assert(srcWizBuf);
+ freeBuffer = false;
+ }
}
- const Common::Rect *r = NULL;
- uint8 *srcWizBuf = drawWizImage(resNum, state, 0, 0, 0, shadow, 0, r, flags, 0, palette);
if (srcWizBuf) {
uint8 *dst;
int32 dstw, dsth, dstpitch, wizW, wizH;
@@ -1683,7 +1701,8 @@
_vm->restoreBackgroundHE(bound);
}
- free(srcWizBuf);
+ if (freeBuffer)
+ free(srcWizBuf);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list