[Scummvm-git-logs] scummvm master -> c8b98dd41cb395d56de15f447b28f6b8b3c3e2e3

digitall dgturner at iee.org
Thu Oct 11 11:12:34 CEST 2018


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c8b98dd41c AGI: Clamp Graphics Blit into Screen Area.


Commit: c8b98dd41cb395d56de15f447b28f6b8b3c3e2e3
    https://github.com/scummvm/scummvm/commit/c8b98dd41cb395d56de15f447b28f6b8b3c3e2e3
Author: D G Turner (digitall at scummvm.org)
Date: 2018-10-11T10:18:48+01:00

Commit Message:
AGI: Clamp Graphics Blit into Screen Area.

Some games, especially fangames appear to blit to co-ordinates outside
the screen area, which caused an assertion in the graphics backend.

To prevent this and allow further debugging in these cases, we clamp
this to the screen area. Note that there are several other locations
which do backend graphics calls, so this may need to be applied
elsewhere in the general case.

This fixes bug Trac #10736.

Changed paths:
    engines/agi/graphics.cpp


diff --git a/engines/agi/graphics.cpp b/engines/agi/graphics.cpp
index 119ccfe..d08e9bb 100644
--- a/engines/agi/graphics.cpp
+++ b/engines/agi/graphics.cpp
@@ -316,6 +316,13 @@ uint32 GfxMgr::getDisplayOffsetToVisualScreenPos(int16 x, int16 y) {
 
 // Attention: uses display screen coordinates!
 void GfxMgr::copyDisplayRectToScreen(int16 x, int16 y, int16 width, int16 height) {
+	// Clamp to sane values to prevent off screen blits causing exceptions in backend
+	// FIXME: Add warnings / debug of clamping?
+	width = CLIP<int16>(width, 0, _displayScreenWidth);
+	height = CLIP<int16>(height, 0, _displayScreenHeight);
+	x = CLIP<int16>(x, 0, _displayScreenWidth-width);
+	y = CLIP<int16>(y, 0, _displayScreenHeight-height);
+
 	g_system->copyRectToScreen(_displayScreen + y * _displayScreenWidth + x, _displayScreenWidth, x, y, width, height);
 }
 void GfxMgr::copyDisplayRectToScreen(int16 x, int16 adjX, int16 y, int16 adjY, int16 width, int16 adjWidth, int16 height, int16 adjHeight) {





More information about the Scummvm-git-logs mailing list