[Scummvm-cvs-logs] CVS: scummvm/sword1 screen.cpp,1.27,1.28
Robert G?ffringmann
lavosspawn at users.sourceforge.net
Sat Jan 3 02:50:01 CET 2004
Update of /cvsroot/scummvm/scummvm/sword1
In directory sc8-pr-cvs1:/tmp/cvs-serv15665/sword1
Modified Files:
screen.cpp
Log Message:
eriktorbjorn's fix for a crash when sprite were completely outside of the screen
Index: screen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sword1/screen.cpp,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- screen.cpp 28 Dec 2003 23:24:03 -0000 1.27
+++ screen.cpp 3 Jan 2004 10:49:08 -0000 1.28
@@ -709,21 +709,24 @@
*pSprWidth = (uint16)sprW;
*pSprX = (uint16)sprX;
*pSprY = (uint16)sprY;
-
- uint16 gridH = (*pSprHeight + SCRNGRID_Y - 1) / SCRNGRID_Y;
- uint16 gridW = (*pSprWidth + SCRNGRID_X - 1) / SCRNGRID_X;
- uint16 gridX = sprX / SCRNGRID_X;
- uint16 gridY = sprY / SCRNGRID_Y;
- uint8 *gridBuf = _screenGrid + gridX + gridY * _gridSizeX;
- if (gridX + gridW > _gridSizeX)
- gridW = _gridSizeX - gridX;
- if (gridY + gridH > _gridSizeY)
- gridH = _gridSizeY - gridY;
- for (uint16 cnty = 0; cnty < gridH; cnty++) {
- for (uint16 cntx = 0; cntx < gridW; cntx++)
- gridBuf[cntx] |= 0x80;
- gridBuf += _gridSizeX;
+ if (*pSprWidth && *pSprHeight) {
+ // sprite will be drawn, so mark it in the grid buffer
+ uint16 gridH = (*pSprHeight + SCRNGRID_Y - 1) / SCRNGRID_Y;
+ uint16 gridW = (*pSprWidth + SCRNGRID_X - 1) / SCRNGRID_X;
+ uint16 gridX = sprX / SCRNGRID_X;
+ uint16 gridY = sprY / SCRNGRID_Y;
+ uint8 *gridBuf = _screenGrid + gridX + gridY * _gridSizeX;
+ if (gridX + gridW > _gridSizeX)
+ gridW = _gridSizeX - gridX;
+ if (gridY + gridH > _gridSizeY)
+ gridH = _gridSizeY - gridY;
+
+ for (uint16 cnty = 0; cnty < gridH; cnty++) {
+ for (uint16 cntx = 0; cntx < gridW; cntx++)
+ gridBuf[cntx] |= 0x80;
+ gridBuf += _gridSizeX;
+ }
}
}
More information about the Scummvm-git-logs
mailing list